HTTP 위치 헤더가 POST 요청/201(생성됨) 응답에만 설정되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com//questions/24039340

문제

잠시 3xx 응답을 무시하고 HTTP 위치 헤더가 POST 요청/201(생성됨) 응답과 함께만 사용되는 이유가 궁금합니다.

로부터 RFC 2616 사양:

201(Created) 응답의 경우 위치는 요청에 의해 생성된 새 리소스의 위치입니다.

이는 널리 지원되는 동작이지만 다른 HTTP 메서드와 함께 사용하면 안 되는 이유는 무엇입니까?가져 가라. JSON API 사양 예로서:

JSON 페이로드 내부의 현재 리소스에 대한 자체 참조 링크를 정의합니다(RESTful API에서는 드문 일이 아닙니다.).이 링크는 모든 페이로드에 포함되어 있습니다.사양에 따르면 해야 하다 POST를 통해 새 문서를 생성하고 값이 페이로드의 자체 참조 링크와 동일한 경우 HTTP 위치 헤더를 포함합니다. 오직 POST에 필요합니다.왜 귀찮게 관습 HTTP 위치 헤더만 사용할 수 있다면 자체 참조 링크 형식을 사용하시겠습니까?

메모:이는 JSON API에만 국한되지 않습니다.그것은 동일하다 , JSON 하이퍼스키마 또는 다른 표준.

노트 2:이는 HTTP 링크 헤더와 동일하므로 HTTP 위치 헤더에만 국한되지 않습니다.JSON API에서 볼 수 있듯이 HAL 및 JSON 하이퍼 스키마는 자체 참조 링크에 대한 규칙을 정의할 뿐만 아니라 관련 리소스 또는 리소스에 대해 가능한 작업에 대한 정보를 표현합니다.그러나 그들은 모두 HTTP 링크 헤더를 사용할 수 있는 것 같습니다.(HTTP 위치 헤더를 사용하지 않으려는 경우 자체 참조 링크를 HTTP 링크 헤더에 넣을 수도 있습니다.)

나는 호언장담하고 싶지 않습니다. 그것은 일종의 "바퀴 재발명"인 것 같습니다.또한 매우 제한적인 것 같습니다.HTTP 위치/링크 헤더만 사용한다면 HTTP 승인 헤더에서 JSON, XML 또는 무엇이든 요청해도 문제가 되지 않으며 HEAD 요청에서 리소스에 대한 유용한 메타 정보를 얻을 수 있습니다. JSON API, HAL 또는 JSON 하이퍼 스키마를 사용하는 경우 링크를 포함합니다.

도움이 되었습니까?

해결책

의미론 Location 헤더는 자체 참조 링크가 아니라 사용자 에이전트가 요청을 완료하기 위해 따라야 하는 링크입니다.이는 리디렉션에서 의미가 있으며 새 위치에 있을 새 리소스를 생성할 때 이동해야 합니다.요청이 이미 완료되었다면, 즉 원하는 리소스가 이미 완전히 표현되어 있다는 뜻이므로, Location.

그만큼 Link 헤더는 의미상 하이퍼텍스트 링크와 동일한 것으로 간주될 수 있지만 미디어 유형이 하이퍼미디어를 인식하지 않는 경우 지정된 리소스와 관련된 메타데이터를 참조하는 데 사용해야 하므로 관련 리소스에 대한 링크 기능을 대체하지 않습니다. RESTful API.

리소스 표현에서 사용자 정의 링크 형식에 대한 필요성은 기본 구현 및 프로토콜에서 리소스를 분리해야 하는 필요성에 내재되어 있습니다.REST는 HTTP와 결합되지 않으며 유효한 URI 체계가 있는 모든 프로토콜을 사용할 수 있습니다.이용하기로 결정하셨다면 Link 모든 링크의 헤더를 HTTP에 연결합니다.

클라이언트가 따라갈 수 있는 FTP 링크를 제공한다고 가정해 보겠습니다.어디가 될까요? Link 그렇다면?

다른 팁

위치 헤더의 의미는 상태 코드에 따라 다릅니다. 201이지만 새로 생성 된 리소스에 링크하지만 3xx 요청에서는 여러 번 (익숙하지 않지만) 의미를 가질 수 있습니다. 나는 그것이 그것이 일반적으로 다른 용도로 피할 수있는 이유라고 생각한다.

대안은 항상 일관된 의미를 갖는 콘텐츠 위치 헤더입니다. 그것은 고객에게 요청한 자원을 정리 URL에 알려줍니다. 그것은 순전히 유익합니다 (클라이언트가 처리 할 것으로 예상되는 위치와는 대조적으로).

그래서, 콘텐츠 위치 헤더가 자체 참조 링크와 유사한 것 같습니다. 그러나 콘텐츠 위치에는 정의 없음 풋과 게시물에 대한 행동 . 그것은 또한 거의 사용되지 않는 것 같습니다.

이 블로그 게시물 위치 VS 콘텐츠 - 위치 좋은 비교입니다. 다음은 견적이 있습니다 :

마지막으로, 어느 헤더도 범용 링크를위한 것이 아닙니다.

조합으로, 신체의 표준화 된 자기 링크가 요구되는 것처럼 보입니다. 그것은 클라이언트 측에 많은 혼란을 피합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top