ResponseEntity.Created 와 location필드
- ResponseEntity 반환 객체는 Created()과 같은 뒤에 붙는 메소드에 따라 response 타입이 결정되는데, created로 할 경우 201 응답코드를 반환한다.
- 우선 근본적으로 응답코드를 쓰는 이유는 뭘까?
- 클라이언트단에서 정상적으로 처리되었는지의 유무를
- 별도의 필드(ex.
success:ok) 없이도 알 수 있게 되어 - 불필요한 네트워크 트래픽을 감소할 수 있기 때문이다.
- 그럼 더 나아가서 201 응답코드를 보낼 때 header에 Location 필드를 같이 보내는 이유는 뭘까?
- 이 역시 클라이언트와의 소통을 위한 것으로
- 클라이언트가 POST 요청에 대한 성공을 인지한 후
- 해당 필드에 들어있는 URI(ex.
http://localhost:8080/users/1)로 요청을 보내면 상세정보를 확인할 수 있게 하기 위함이다.
- 이를 통해 id를 responseBody에 담아보낼 필요가 없다.
- 이전에 통상적인 통신 규칙을 잘 모를 때 아래와 같이 api를 구현한 적이 있다. (잘못된 예입니다!)
- ㅋㅋㅋㅋㅋ,,,, 200을 보내고 id는 직접 dto로 만들어 보냈다,,,
- 그래도 id를 보내긴 했으니,,
- 그렇지만 Spring 공식 문서에 보면 아래와 같은 예시 코드를 보여준다. (올바른 예입니다)
- 예시가 두 개 있긴 한데, 핵심은 responseHeader에 location이란 필드를 넣는 거다.
- 그리고 location이란 필드에ㄹ 생성된 값을 확인할 수 있는 uri를 넣는거다.
- 참고


