(죄송합니다. 처음으로 (2)에서 / edit / 및 / delete /를 놓쳤습니다 ...)
URI의 아이디어는 그것이 메소드 호출이 아니라 주소 지정 가능한 자원 의 식별자 라는 것 입니다. 따라서 URI는 특정 리소스를 가리켜 야합니다. URI를 연기하면 항상 동일한 리소스를 가져와야합니다.
즉, 데이터베이스에서 행의 기본 키에 대해 생각하는 것과 동일한 방식으로 URI에 대해 생각해야합니다. Universal Resource Identifier라는 것을 고유하게 식별합니다.
따라서 복수를 사용하든 단수를 사용하든 URI는 호출이 아닌 식별자 여야합니다 . 당신이하려고하는 것은 방법에 있습니다 : 즉 GET (get), PUT (create / update), DELETE (delete) 또는 POST (기타).
따라서 "/ item / delete / 123"은 리소스를 가리 키지 않기 때문에 REST를 중단합니다. 메서드 호출에 더 가깝습니다.
(또한 의미 적으로는 URI를 GET하고 구식을 결정한 다음 식별자이므로 동일한 URI를 삭제할 수 있어야합니다. GET URI에 "/ delete /"가없고 DELETE는 HTTP 의미론에 위배됩니다. 리소스 당 2 개 이상의 URI를 브로드 캐스트하고 있습니다.
이제 치트는 이것입니다. 자원의 정의와 정의에 대한 명확한 정의가 없으므로 REST의 일반적인 회피는 "처리 명사"를 정의하고 URI를 가리키는 것입니다. 그것은 거의 단어 게임이지만 의미를 만족시킵니다.
예를 들어 어떤 이유로 든 이것을 사용할 수 없다면 :
DELETE /items/123
당신은 "삭제 자"처리 자원을 가지고 세계에 선언하고 사용할 수 있습니다
POST /items/deletor { id: 123 }
이제는 RPC (Remote Procedure Call)와 매우 유사하지만 HTTP 사양에 이름이 지정된 POST 사양의 "데이터 처리"절의 방대한 허점을 통과합니다.
그러나, 그 일을하는 것은 일종의 예외적이며, 당신이 경우 수 APPEND에 대한 공통의 삭제에 대한 삭제 / 업데이트를 생성하기위한 PUT 및 POST를 사용하여 작성하고, 다른 모든 것들, 다음 해야 , 그것은 HTTP의보다 표준 사용 때문에. 그러나 "commit"또는 "publish"또는 "redact"와 같은 까다로운 경우에는 프로세서 명사를 사용하는 경우 REST 순수 주의자를 만족 시키며 여전히 필요한 의미를 제공합니다.
PUT
and 가 없으면DELETE
쿼리 문자열과 차별화하지 않고 경로에 추가하는 것이 좋습니다. 기존 작업에 대한 쿼리 문자열 수정이 아닙니다. 그것은 A의 별도의 작업.