inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

로그인 #2. 세션기반인증방식 : 실습 ★★★

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

해결된 질문

306

정태성

작성한 질문수 3

0

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

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

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

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

참고한 문서 링크입니다.

http매서드 post 기술면접 운영체제 면접

답변 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 리다이렉션에도 붙여야 합니다. 

 

감사합니다. 

0

정태성

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

안녕하세요 선생님, API 실습 2 강의를 듣다 궁금한 점이 생겨 질문 드립니다.

0

555

2

JSON으로 사이트맵

0

503

1

브라우저 렌더링 부분 교재 관련 질문입니다!

0

477

2

교제를 따로 사야하나요?

0

1975

1

클라우드 아키텍쳐에서 토폴로지 설계

1

720

1

로컬스토리지, 세션 스토리지 용량 초과하면 어떻게 되나요?

0

1560

1

학습 순서가 정해져있는건지 궁금합니다.

0

522

1

TCP/IP 4계층, OSI 7계층에 대해 질문드립니다.

0

975

1

서브넷마스크 할당 퀴즈가 헷갈립니다

1

477

1

Linked List의 시간 복잡도에 대한 질문입니다

0

486

1

HTTP 메서드 #1. 질문있습니다.

0

519

1

jwt 토큰

0

757

1

해당 질문에 대한 답변 예시 중에 제가 본 것 중 제일 고품질이네요

0

445

2

UDP의 고정길이에 대하여 질문이 있습니다.

0

322

1

팩토리 패턴의 의존성 주입과 관련해서 질문이 있습니다!

0

695

1

질문 잇워오

0

389

1

안녕하세요 axios DIP 사례의 화살표가 잘 이해가 되지 않아 질문드립니다

0

316

1

동적배열 질문있어요

0

246

1

책과 강의 교안.. 어떤 것에 비중을 두어야 하나요?

0

499

1

HTTP3 UDP통신

0

979

1

[오탈자 문의]

0

269

1

attribute, field, property의 명확한 차이점이 궁금합니다.

1

1467

1

싱글톤 패턴에서 정적 멤버 방식과 정적 블록 방에서 정적 블록 방식은 final이 없는 이유

0

340

1

Json이 프로그래밍 언어와 플랫폼에 독립적인 이유가 뭔가요?

0

440

1