0. REST, REpresentational State Transfer
- 잘 표현된 HTTP URI로 Resource를 정의하고 HTTP Method로 Resource에 대한 행위를 정의
- Resource는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있음
- Resource : 서비스를 제공하는 시스템의 자원을 의미. URI로 정의됨
- EX) GET /members : GET이라는 HTTP Method로 URI의 Resource를 조회. members라는 명사를 통해 회원목록임을 알 수 있음.
- HTTP Method
HTTP Method | 의미 | 역할 |
POST | Create | Resource 생성 |
GET | Read | 해당 URI의 Resource 조회 |
PUT | Update | 해당 URI의 Resource 수정 |
DELETE | Delete | 해당 URI의 Resource 삭제 |
- 참고 하기 좋은 글 https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
1. GET Method
- 주소창에 파라미터가 노출 된다
- 브라우저에서 주소에 대한 캐시가 이루어지므로 정보를 얻을 때 사용 한다
1) src/main/java/controller package/GetController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package study.controller;
import study.model.SearchParam;
@RestController
@RequestMapping("/api")
public class GetController {
public String getRequest() {
return "This is Get method";
}
// localhost:8080/api/getParameter?id=1234&password=abcd
@GetMapping("/getParameter")
public String getParameter(@RequestParam String id, @RequestParam(name="password") String pwd) {
String password = "1234"; //지역변수로 선언하여 사용 가능함. 여기서는 선언만 했을 뿐이지 사용하지 않음.
System.out.println("id: " + id);
System.out.println("pwd: " + pwd);
return id+pwd;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
2) Parameter가 많은 경우
- src/main/java/model package/SearchParam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package study.model;
public class SearchParam {
private String account;
private String email;
private int page;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
-src/main/java/controller package/GetController.java
- localhost:8080/api/getMultiParameter?account=yk&email=yk@abcd.com&page=50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package study.controller;
import study.model.SearchParam;
@RestController
@RequestMapping("/api")
public class GetController {
// parameter가 많아 지는 경우
@GetMapping("/getMultiParameter")
public SearchParam getMultiParameter(SearchParam searchParam) {
System.out.println(searchParam.getAccount());
System.out.println(searchParam.getEmail());
System.out.println(searchParam.getPage());
// json 형식으로 자동으로 return
// 현재 json을 표준처럼 사용하고 있기 때문에 String Boot에 내장되어 있음
return searchParam;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
(결과) {"account":"yk","email":"yk@abcd.com","page":50}
2. POST Method
- 주소창에 parameter가 노출 되지 않음. 주소창에 사용자의 요청사항이 노출되지 않는다.
- GET 방식에서는 주소 길이 제한이 있지만 POST는 그보다 길게 사용 가능 (제한은 있음)
- 브라우저가 주소 캐시를 하지 못하는 특성이 있음
- POST를 사용하는 경우
- html의 <form> 태그를 사용할때
- ajax 검색 할 때 (ajax 참고 https://coding-factory.tistory.com/143)
- 검색 parameter가 많다는 뜻으로 HTTP 통신을 할 때 POST BODY에 DATA를 넣어서 보내겠다는 의미
- json, xml, multipart-form, text-plain 등의 type 존재
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package study.controller;
import study.model.SearchParam;
@RestController
@RequestMapping("/api")
public class PostController {
@PostMapping(value = "/postMethod")
public SearchParam postMethod(@RequestBody SearchParam searchParam) {
return searchParam;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
3. PUT/PATCH Method
- POST와 마찬가지로 BODY에 데이터가 들어있으며 주로 업데이트에 사용
4. DELETE Method
- GET과 마찬가지로 주소에 parameter가 들어가며 데이터를 삭제 할 때 사용
'Java > Spring Boot' 카테고리의 다른 글
SpringBoot-008-lombok 이용하기 (0) | 2019.09.01 |
---|---|
SpringBoot-007-JPA 이용하기 (0) | 2019.08.26 |
SpringBoot-005-Spring web MVC (0) | 2019.08.19 |
SpringBoot-004-Spring Boot 프로젝트 살펴보기 (0) | 2019.08.19 |
SpringBoot-003-Spring boot에서 JSP 사용하기 (0) | 2019.08.18 |