해결된 질문
작성
·
227
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 리다이렉션에도 붙여야 합니다.
감사합니다.
감사합니다 ㅎㅎ 제가 궁금했던것보다 더 많은 것들을 알게되었네요