2016-11-01 2 views
0

끝점 /api/users/이있는 REST API가 있다고 가정 해 보겠습니다. 해당 엔드 포인트에 사용자를 게시하면 새 사용자가 작성되어 기존 콜렉션에 추가되고 사용자에게 고유 한 ID를 부여하여 작업 할 수 있습니다. GET /api/users/1을 만들면 ID가 1 인 생성 된 사용자가 나에게 반환됩니다. 내 질문은 단일 항목으로 게시하는 경우에 해당됩니다. 컬렉션에 대한 게시의 경우 자원이 생성 된 경우 201 Created을 반환하고 자원이 이미 존재하는 경우 409 Conflict을 반환해야합니다. 단일 리소스에 게시하는 가장 좋은 방법은 무엇입니까? 405 Method Not Allowed을 반환해야 하나의 리소스로 POST 할 수 없거나 404 Not Found (here)으로 반환해야합니까?단일 항목에 대한 게시 (REST API)

답변

0

요청이 수신 된 순간에, 경우 자원 (상관없이 나타내는 개념)을 특정 방법 (POST), 반환 올바른 응답 405

405이다를 지원하지 않습니다 (메소드 허용되지 않음) 상태 코드는 요청 라인에서 수신 된 메소드가 오리진 서버에 의해 인식되었지만 대상 자원에 의해 지원되지 않음을 나타냅니다. 오리진 서버는 현재 지원되는 대상 자원의 목록을 포함하는 405 응답에 Allow 헤더 필드를 생성해야합니다 (MUST).

HTTP 사양은 방법 (OPTIONS) 및 방법이 허용되는 것을 발견 할 서버를 심문하기 위해 클라이언트를 가능하게 응답 헤더 (Allow)가 포함되어 있습니다. Adoption might be lacking, 내가 그랬다고 생각하지만 CORS.

참고 : 단일 리소스에 대한 POST가 적절한 옵션입니다 (HTML이 하이퍼 미디어 형식 인 API에서 star a responsitory으로 프로토콜을 정의하는 방법을 고려하십시오). 이 경우 상황이 잘 진행되었다고 가정하고 적절한 성공 코드 (200, 201, 204 ...)를 선택해야합니다.

+0

아마도 내 질문에 애매한 말을했지만 POST가 특정 항목 (예 :'/ api/users/12345')에 게시 할 수 있도록 지원해야하는지 물어보고'404' /'409'를 반환해야합니다. 그게 최선의 관행인가요? 아니면 전혀 지원하지 않아야하며'405 Method Not Allowed'를 돌려 주어야합니까? – Kookz

+0

/api/users/12345가 POST를 지원하지 않으면 405를 반환하는 것이 가장 좋습니다. – VoiceOfUnreason

0

누군가 PUT을 호출하여 업데이트해야하는 특정 항목으로 POST를 시도하는 경우. 제 생각에는 404가 올바른 반환 상태 코드 여야하며 클라이언트가 찾고있는 리소스를 사용할 수 없다는 것을 클라이언트에 알려줍니다. 즉, 해당 URL이 맞지 않습니다.

405 메서드는 클라이언트가 잘못된 메서드 유형으로 올바른 URL에 도달 할 때 호출해야합니다./api/users/{id}에 PUT이 있지만 클라이언트가 POST를 사용하고 있다고 가정하십시오.

+0

리소스가 아직 없으면 어떻게해야합니까? PUT을 호출하여 해당 리소스를 업데이트 할 수 없습니다. – Kookz

+0

음, PUT은 업데이트 호출 규칙입니다. 리소스가 없으면 PUT이 204를 반환 할 수 있습니다. 콘텐츠 없음 –