HTTP body에 메시지를 설정하는 2가지 방법에 대해 소개하려 한다.
졸프를 하면서 해당 방법에 대해 고민을 많이 했는데, 내가 찾아본 정보들과 졸프에 어떤 방법을 적용할 것인지 정리할 예정이다.
@PostMaping
public ResponseEntity<Void> save(@RequestBody
UserRequest userRequest){
userService.save(userRequest);
return ResponseEntity.created().build(); //상태 코드만 반환
}
@GetMapping
public ResponseEntity<UserResponse> save(Long UserId) {
UserResponse response = userService.find(usesrId);
return ResponseEntity.ok(response);//body까지 반환
}
@ResponseStatus(value = HttpStatus.CREATED)
@PostMapping
public void save(@RequestBody UserRequest userRequest) {
userService.save(userRequest);
}
// 200인 경우 생략 가능
@GetMapping
public UserResponse find(Long userId) {
return userService.find(userId);
}
ResponseEntity
@ResponseBody + DTO
응답을 strict하게 관리할 경우(요청,응답을 DTO로 관리할 때)
결론적으로 말하면 2번 방법인 @ResponseBody + DTO를 사용하기로 했다.
Controller에서는 응답으로 200만 핸들링하고, DTO를 반환했다는 것 자체가 이미 성공을 의미하므로 굳이 body에 message 또는 status code를 넣어 리턴하는 것이 비효율적이라고 생각했다.(프론트 개발자도 body에 message나 status code가 필요 없다고 했음)
찾다보니 정답은 없고 각 프로젝트에 맞게 사용하면 될 것 같다.
이건 나도 좀 찾아봐야 할 듯.. 잘 보고 갑니다 ㅎ
추가적으로 Velog 코드 넣을 때 ``` 옆에 java 붙이면 java 코드처럼 인식해줘서 보기 편함!