🍀

ResponseEntity.Created 와 location필드

작성일자
Oct 17, 2023
태그
DIARY_DEVELOP
프로젝트
FIS
책 종류

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를 넣는거다.