아이디어는 응답 본문이 해당 항목으로 연결되는 페이지를 제공한다는 것입니다.
201 생성됨
201 (생성됨) 상태 코드는 요청이 완료되어 하나 이상의 새 리소스가 생성되었음을 나타냅니다. 요청에 의해 생성 된 기본 리소스는 응답의 Location 헤더 필드 또는 수신 된 Location 필드가없는 경우 유효한 요청 URI로 식별됩니다.
즉 , 새로 생성 된 항목을 찾을 수있는 URL을 제공하는 Location
응답 헤더에 를 포함 해야합니다 .
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
응답 본문
그런 다음 응답 본문에 포함해야하는 내용을 계속 언급합니다 .
201 응답 페이로드는 일반적으로 생성 된 리소스를 설명하고 링크합니다.
브라우저를 사용하는 사람의 경우 새로 생성 된 리소스로 이동하기 위해보고 클릭 할 수있는 항목을 제공합니다.
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Content-Type: text/html
Your answer has been saved!
Click <A href="https://stackoverflow.com/a/36373586/12597">here</A> to view it.
페이지가 로봇에 의해서만 사용되는 경우 컴퓨터에서 읽을 수있는 응답을 갖는 것이 합리적입니다.
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Content-Type: application/xml
<createdResources>
<questionID>1860645</questionID>
<answerID>36373586</answerID>
<primary>/a/36373586/12597</primary>
<additional>
<resource>http://stackoverflow.com/questions/1860645/create-request-with-post-which-response-codes-200-or-201-and-content/36373586#36373586</resource>
<resource>http://stackoverflow.com/a/1962757/12597</resource>
</additional>
</createdResource>
또는 원하는 경우 :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Content-Type: application/json
{
"questionID": 1860645,
"answerID": 36373586,
"primary": "/a/36373586/12597",
"additional": [
"http://stackoverflow.com/questions/1860645/create-request-with-post-which-response-codes-200-or-201-and-content/36373586#36373586",
"http://stackoverflow.com/a/36373586/12597"
]
}
응답은 전적으로 귀하에게 달려 있습니다. 그것은 당신이 원하는 것입니다.
캐시 친화적
마지막으로 생성 된 리소스를 미리 캐시 할 수있는 최적화가 있습니다 (이미 콘텐츠가 있으므로 방금 업로드했습니다). 서버는 내가 방금 업로드 한 콘텐츠와 함께 저장할 수있는 날짜 또는 ETag를 반환 할 수 있습니다.
201 응답에서 ETag 및 Last-Modified와 같은 유효성 검사기 헤더 필드의 의미와 목적에 대한 논의는 섹션 7.2 를 참조하십시오 .
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/23704283/12597
Content-Type: text/html
ETag: JF2CA53BOMQGU5LTOQQGC3RAMV4GC3LQNRSS4
Last-Modified: Sat, 02 Apr 2016 12:22:39 GMT
Your answer has been saved!
Click <A href="https://stackoverflow.com/a/36373586/12597">here</A> to view it.
그리고 ETag
s는 순전히 임의의 값입니다. 리소스가 변경 될 때 (및 캐시를 업데이트해야 할 때) 달라지는 것이 중요합니다. ETag는 일반적으로 해시 (예 : SHA2)입니다. 그러나 데이터베이스 rowversion
또는 증가하는 개정 번호 일 수 있습니다. 일 이 변할 때 변할 모든 것 .