고객 관리 시스템을 위해 RESTful 서비스를 작성 중이며 레코드를 부분적으로 업데이트하는 모범 사례를 찾으려고 노력하고 있습니다. 예를 들어, 발신자가 GET 요청으로 전체 레코드를 읽을 수 있기를 원합니다. 그러나 업데이트하려면 상태를 ENABLED에서 DISABLED로 변경하는 것과 같이 레코드의 특정 작업 만 허용됩니다. (이보다 더 복잡한 시나리오가 있습니다)
보안상의 이유로 호출자가 업데이트 된 필드만으로 전체 레코드를 제출하지 않기를 원합니다 (과도한 느낌).
URI를 구성하는 권장 방법이 있습니까? REST 책을 읽을 때 RPC 스타일 호출은 눈살을 찌푸리는 것처럼 보입니다.
다음 통화에서 ID가 123 인 고객의 전체 고객 레코드를 반환하는 경우
GET /customer/123
<customer>
{lots of attributes}
<status>ENABLED</status>
{even more attributes}
</customer>
상태를 어떻게 업데이트해야합니까?
POST /customer/123/status
<status>DISABLED</status>
POST /customer/123/changeStatus
DISABLED
...
업데이트 : 질문을 보완합니다. '비즈니스 로직 호출'을 REST API에 어떻게 통합합니까? 합의 된 방법이 있습니까? 모든 방법이 본질적으로 CRUD 인 것은 아닙니다. ' sendEmailToCustomer (123) ', ' mergeCustomers (123, 456) ', ' countCustomers () ' 와 같은 일부는 더 복잡합니다.
POST /customer/123?cmd=sendEmail
POST /cmd/sendEmail?customerId=123
GET /customer/count
POST다음과 같습니다 : Roy Fielding 자신의 roy.gbiv.com/untangled/2009/it-is-okay-to-use-post 게시물 : 기본 아이디어 : 운영 용도에 이상적인 방법 (GET또는 등PUT)이 아닙니다POST.