2011-04-08 2 views
3

리소스에 대한 PUT 메서드를 정의 할 때 리소스의 전체 정의 (즉, 리소스를 만드는 데 필요한 모든 요소)를 포함하려면/standard/customary가 필요하며 업데이트 된 필드 만 보낼 수도 있습니까?PUT 요청 본문에 전체 엔터티가 있어야합니까?

예를 들어, 하나의 수량을 포함하여 10 개의 속성이있는 자원이 있고 수량을 지정된 값으로 업데이트하려고합니다. 수량 만 PUT해도됩니까?

다른 9 가지 속성은 어떻습니까? 각 속성을 개별적으로 업데이트 할 수 있다고 가정하면 요청 본문을 단순히 10 개의 속성을 모두 선택 사항으로 정의하는 것이 좋습니다.

답변

4

PUT을 RESTfully로 사용하면 전체 리소스를 대체하기 때문에 전체 특성 집합을 포함 할 수 있습니다.

그런데 대부분의 경우 REST가 다소 부적절하게 사용되고 API가 잘 문서화되어있는 한 상황에 가장 적합한 것으로 판단 할 수 있습니다.

+0

감사합니다. 저스틴. 정당화는 분명히 대역폭/직렬화 오버 헤드를 줄이는 것이지만, RMI 디자인으로 돌아가서 나는 항상 클라이언트가 단순히 필드가 아닌 수정 된 객체를 돌려 주도록 요구했다. 그런 다음 서버는 수정 여부를 묻거나 전체 교체를 수행할지 여부를 결정합니다. 클라이언트는 매우 간단 할 수 있습니다 - GET, 수정, PUT - 다른 로직 및 간단한 인터페이스. –

+0

전체 리소스를 바꾸려면 PUT을 사용하는 것이 훨씬 좋습니다. 부분 업데이트에는 [PATCH method] (http://tools.ietf.org/html/rfc5789)가 사용되는 경우가 있습니다. –

관련 문제