본문 바로가기

Java/Spring Boot

SpringBoot-006-REST API (GET/POST/PUT/DELETE)

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;
 
 
 
@RestController
@RequestMapping("/api")
public class GetController {
 
    @RequestMapping(path = "/getmethod", method=RequestMethod.GET)
    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;
 
 
 
@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;
 
 
 
@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가 들어가며 데이터를 삭제 할 때 사용

 

 

 

반응형