REST API

  • HTTP - GET Method
    • 주소 창에 파라미터 노출
    • 브라우저에서 주소에 대한 캐시가 이루어지므로 빠르게 정보를 가져올 수 있다.
@GetMapping("/getParameter")
public String getParameter(@RequestParam String id, @RequestParam(name = "password") String pwd){ //query string으로 받을 때
    return id + pwd;
}
@GetMapping("/getMultiParameter")
public SearchParam getMultiParameter(SearchParam searchParam){ 
    //객체로 받을 때
    return searchParam; //json 응답 : Spring boot는 기본적으로 잭슨 라이브러리 내장
}
  • HTTP - POST Method
    • 주소 창에 파라미터가 노출 X
    • GET 방식에서는 주소 길이 제한이 있지만 POST는 그보다 길게 사용가능
    • 브라우저가 주소 캐시를 하지 못한다.
    • HTML의 <form> 태그나 ajax를 통해 POST 요청
    • 받는 데이터 형식 : json, xml, multipart-form, text-plain 등
@PostMapping(value = "/postMethod") //produces = {"application-json"} : json 외에 받을 데이터 형식을 지정
    public SearchParam postMethod(@RequestBody SearchParam searchParam){ // http post body => data
        return searchParam;
    }
  • HTTP - PUT/PATCH Method
    • POST와 마찬가지로 body에 데이터가 들어있다.
    • 주로 업데이트에 사용한다.
    • 스프링에 @PutMapping, @PatchMapping와 같은 어노테이션을 지원하기 때문에 url를 지정할 수 있지만 REST API에서는 이러한 용도로 주소를 할당해서 사용하진 않는다.
  • HTTP - DELETE Method
    • GET과 마찬가지로 주소에 파라미터가 들어간다.
    • 데이터를 삭제할 때 사용한다.
  • REST의 개념
    • HTTP 프로토콜에 있는 Method를 활용한 아키텍처 스타일
    • HTTP Method를 통해 Resource를 처리하는 방법에 대해 정의한 것
    • CRUD를 통한 Resource를 조작할 때 사용한다.
    • 보통 REST API는 @PathVariable로 나타낸다.
HTTP Method 동작 URL 형태
GET 조회(SELECT * READ) /user/{id}
POST 생성(CREATE) /user
PUT/PATCH 수정(UPDATE * CREATE) /user
DELETE 삭제(DELETE) /user/{1}