검색 api를 구현하던 중 @GetMapping
과 @PostMapping
중 어떤 메소드를 사용하는 것이 올바른지에 대해 고민이 생겼다.
분명 검색어인 keyword를 입력해서 접근하지만 주 목적은 검색된 결과이기 때문에 @GetMapping
이 적절하다 생각되었지만 확실한 근거를 알기위해 알아보기로 하였다.
주로 우리가 알고있는 검색 기능에 대해서는 검색어인 keyword와 검색 타입(예를들어 게시글을 검색한다고 한다면 작성자, 글 제목, 글 내용 등)이기 때문에 @GetMapping
을 사용해서 @RequestParam
어노테이션으로 파라미터 값을 가져와서 사용한다.
@GetMapping
public ResponseDto searchData(@RequestParam String keyword) {
// ...
}
반대로 특정 상황에서 검색에 필요한 데이터가 많을 경우에는 RequestBody가 필요하기 때문에 @PostMapping
, @RequestBody
어노테이션을 사용해 RequestDto로 데이터들을 가져와서 사용한다.
@PostMapping
public ResponseDto searchData(@RequestBody RequestDto requestDto) {
// ...
}
구글링을 통해 검색 기능은 @GetMapping
으로 사용한다는 것을 알았지만 필요한 상황에 따라서 @PostMapping
또한 사용 가능하다는 것을 알게되었다.