비 CRUD 작업을 RESTful 서비스에 추가하는 "RESTful"방법은 무엇입니까? 다음과 같은 레코드에 대한 CRUD 액세스를 허용하는 서비스가 있다고 가정합니다.
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
자동차의 색상을 변경하려면 간단히 POST /api/car/123
새 색상에 대한 POST 변수를 포함합니다.
그러나 내가 자동차를 구매하고 싶다고 가정 해 봅시다. 그 작업은 단순히 "사용자"레코드의 "소유 한 자동차"속성을 업데이트하는 것보다 더 복잡합니다. POST /api/car/123/purchase
"purchase"가 본질적으로 메소드 이름 인, 과 같이 단순히하는 것이 RESTful 입니까? 아니면 PURCHASE
대신에 사용자 지정 HTTP 동사를 사용해야 POST
합니까?
아니면 CRUD가 아닌 작업이 완전히 REST 범위를 벗어 납니까?
PATCH /api/car/123
색상 매개 변수를 사용PUT /api/car/123
하여 전송하거나 전체 자동차 객체 를 사용 하여 전송하는 것이 좋습니다 . POST는 새 차를 만드는 아마 URL의 끝에 ID를 포함하지 않을 것임을 추론 할 것이다