• 카테고리

    질문 & 답변
  • 세부 분야

    취업 · 이직

  • 해결 여부

    해결됨

HTTP 상태코드와 메서드 : POST 메서드 응답 코드 질문

22.08.07 16:57 작성 조회수 158

0

안녕하세요 큰돌님 ㅎㅎ 언제나 강의 잘 보고 있습니다. HTTP 상태코드와 메서드 강의를 보고 궁금한 점이 생겨서 질문드립니다.

저는 API 를 만들고 POST 메서드에 대해서도 작업이 성공하면 200 코드를 내려줬었는데요, 이번에 큰돌님 강의를 보고 201로 고쳐야 하나? 싶은 생각에 자료를 더 찾아봤습니다. 

RFC 7231 HTTP/1.1 문서를 찾았고, 거기서 200 응답코드는 메서드마다 각기다른 응답 payload 를 반환하며, POST 에 대해서도 반환하는 paylaod 가 있는것을 확인했습니다. 

이 규칙만 지킨다면 POST 요청에 대해서도 200을 반환해도 문제가 없는건지 궁금합니다.

참고한 문서 링크입니다.

답변 1

답변을 작성해보세요.

1

안녕하세요. ㅎㅎ

Status code를 200에서 201로 바꾼다고 하셨을 때 많은 코스트가 들면… 

고민해볼만하지만 왠만하면 새로운 리소스를 생성했을 때 201로 하시는게 더 “명시적”입니다. 

둘 다 비슷하게도 “성공”에 대한 메시지이지만 201이 조금 더 자세한 설명이 된다고 보시면 됩니다. 

 

201은 리소스가 생성되었다 + 해당 리소스에 대한 링크를 단다. 라는 점이 다릅니다. 

 

좀 더 얘기를 하자면 201에는 Location 헤더를 붙여주어야 합니다. 

새로이 생성된 리소스에 관한 헤더인데요.  

 

예를 들어  큰돌.com의 1번째 북이라는 리소스가 새로이 생성되었다라고 하면  

Location: http://큰돌.com/books/1

이런식으로 헤더를 붙여야 합니다.  

 

만약에 헤더를 못 붙이는 경우 해당 리소스 반환값에 

link를 달아주어야 합니다. (이는 REST API의 HATEOS 특성이기도 해요.)

{

“link” : “http://큰돌.com/books/1

}

 

 

 * 참고로 Location 헤더는 3xx 리다이렉션에도 붙여야 합니다. 

 

감사합니다. 

정태성님의 프로필

정태성

질문자

2022.08.07

감사합니다 ㅎㅎ 제가 궁금했던것보다 더 많은 것들을 알게되었네요