답변:
Create = PUT with a new URI
POST to a base URI returning a newly created URI
Read = GET
Update = PUT with an existing URI
Delete = DELETE
PUT은 PUT과 함께 사용되는 URI의 존재 여부에 따라 Create와 Update에 모두 매핑 할 수 있습니다.
POST는 Create에 매핑됩니다.
수정 : POST는 일반적으로 Create에 사용되지만 Update에 매핑 할 수도 있습니다. POST는 부분 업데이트 일 수도 있으므로 제안 된 PATCH 방법이 필요하지 않습니다.
핵심은 당신이 dem 등식 변화를 하고 있는지 아닌지 입니다. 즉, 메시지에 대해 두 번 조치를 취하면 마치 한 번만 수행 된 것처럼 "같은"것이 존재하는 경우, dem 등 전한 변경 사항이 있으며 PUT에 매핑되어야합니다. 그렇지 않으면 POST에 맵핑됩니다. 클라이언트가 URL을 합성하도록 허용하지 않으면 PUT은 업데이트에 가깝고 POST는 Create를 잘 처리 할 수 있지만 가장 확실한 유일한 방법은 아닙니다. 클라이언트가 자신이 만들고자 /foo/abc
하는 내용을 알고 있고 어떤 내용을 넣을지를 안다면 PUT처럼 잘 작동합니다.
POST에 대한 정식 설명은 무언가를 구매하려고 할 때입니다. 이는 아무도 모르게 반복하고 싶지 않은 행동입니다. 대조적으로, 주문에 대한 발송 주소를 설정하는 것은 PUT으로 잘 수행 할 수 있습니다. 6 Anywhere Dr, Nowhereville
한 번, 두 번 또는 백 번 으로 보내라는 메시지는 중요하지 않습니다 . 여전히 동일한 주소입니다. 이것이 업데이트라는 의미입니까? 가능 ... 백엔드 작성 방법에 따라 다릅니다. (결과가 동일하지 않을 수 있습니다. 자원 표현의 일부로 PUT을 마지막으로 수행했을 때 사용자에게 다시보고 할 수 있으므로 반복 된 PUT이 동일한 결과를 초래하지는 않지만 결과는 여전히 기능적으로 "동일"해야합니다.)
POST
와 그 사이의 이러한 차이점은 PUT
흥미로운 것입니다. "어떤 것이 '생성'이고 어느 것이 '업데이트'입니까?" 훨씬 더 명확합니다. 또한, API의 구현과 관련하여, 반복적 인 데이터 PUT
는 무소음 (no-no-op)이되어야하지만, POST
전송되는 데이터의 일부 측면이 데이터 저장소에서 고유하게 유지된다면 반복자는 예외를 던질 수있다. 응용 프로그램을 지원합니다.
현재 (2016) 최신 HTTP 동사는 GET, POST, PATCH , PUT 및 DELETE입니다.
개요
도움이 되었기를 바랍니다!
REST API 설계에 관심이 있으시다면이 책을 읽으십시오. 웹 사이트 온라인 버전 github 저장소
stormpath의 훌륭한 YouTube 비디오 대화가 실제로 이것을 설명하며 URL은 비디오의 올바른 부분으로 건너 뛰어야합니다.
또한 REST API를 만드는 데 시간을 투자 할 생각이라면 한 시간 이상 이야기하지만 매우 혼란 스럽습니다.
구체적인 상황에 따라 다릅니다 .. 그러나 일반적으로 :
PUT = 구체적인 URI로 구체적인 자원을 업데이트하거나 변경합니다.
POST = 주어진 URI의 소스 아래에 새로운 리소스를 만듭니다 .
즉
블로그 게시물을 편집하십시오.
PUT : / blog / entry / 1
새로운 것을 만드십시오 :
POST : / blog / entry
PUT은 요청 전에 새로운 리소스의 URI가 명확한 일부 상황에서 새로운 리소스를 생성 할 수 있습니다. POST는 다른 여러 유스 케이스도 구현하는 데 사용할 수 있으며 다른 유스 케이스 (GET, PUT, DELETE, HEAD, OPTIONS)는 다루지 않습니다.
CRUD 시스템에 대한 일반적인 이해는 GET = 요청, POST = 작성, Put = 업데이트, DELETE = 삭제입니다.
REST의 빌딩 블록은 주로 리소스 (및 URI)와 하이퍼 미디어입니다. 이러한 맥락에서, GET
자원의 표현을 얻는 방법입니다 (실제로 SELECT
CRUD 용어 로 맵핑 될 수 있음 ).
그러나 CRUD 작업과 HTTP 동사간에 일대일 매핑이 반드시 필요한 것은 아닙니다. 사이의 주요 차이점 PUT
과 POST
그들의 나무 등 속성에 관한 것입니다. POST
또한 일반적으로 PUT
완전히 새로운 리소스 표현을 보내는 것을 의미 하므로 부분 업데이트에 더 일반적으로 사용됩니다 .
나는 이것을 읽는 것이 좋습니다.
HTTP 사양 도 유용한 참고 자료입니다 :
PUT 메소드는 동봉 된 엔티티가 제공된 Request-URI 아래에 저장되도록 요청합니다.
[...]
POST와 PUT 요청의 근본적인 차이점은 Request-URI의 다른 의미에 반영됩니다. POST 요청의 URI는 동봉 된 엔터티를 처리 할 리소스를 식별합니다. 해당 리소스는 데이터 수락 프로세스, 다른 프로토콜의 게이트웨이 또는 주석을 허용하는 별도의 엔터티 일 수 있습니다. 반대로 PUT 요청의 URI는 요청으로 둘러싸인 엔티티를 식별합니다. 사용자 에이전트는 URI가 의도 된 것을 알고 서버는 다른 자원에 요청을 적용해서는 안됩니다. 서버가 요청을 다른 URI에 적용하기를 원하는 경우,
일반적으로, 이것은 내가 사용하는 패턴입니다.
심포니 는 HTTP 방식을 유지하는 프로젝트의 시도는 CRUD 방법과 함께 합류 자신의 목록 은 다음과 같이 동료를 :
"실제로 많은 최신 브라우저는 PUT 및 DELETE 방법을 지원하지 않습니다."
내가 기억하는 바에 따르면 Symfony는 폼을 생성 할 때 지원하지 않는 브라우저에 대해 PUT 및 DELETE를 "가짜" "브라우저가 지원하지 않는 경우에도 이론적으로 올바른 HTTP 방법을 사용하려고 시도합니다" 그것.