PUT 및 DELETE HTTP 요청 방법의 유용성은 무엇입니까?
나는 이것에 대해 많은 것을 읽었지만이 주제에 대한 결론을 얻지 못했습니다.
하지만 PUT 또는 DELETE HTTP 요청 메서드를 사용한 적이 없습니다. 나의 경향은 시스템 (내 애플리케이션 또는 웹 사이트)의 상태가 영향을받지 않을 때 (제품 목록과 같이) GET을 사용하고 영향을받을 때 (주문이 접수 됨) POST를 사용하는 것입니다. 충분하지 않나요? 아니면 뭔가 빠졌나요?
DELETE는 요청 리소스를 삭제하기위한 것입니다.
DELETE 메소드는 Request-URI로 식별되는 자원을 원 서버가 삭제하도록 요청합니다. 이 방법은 원 서버에서 사람의 개입 (또는 다른 수단)에 의해 무시 될 수 있습니다. 클라이언트는 원본 서버에서 반환 된 상태 코드가 작업이 성공적으로 완료되었음을 나타내더라도 작업이 수행되었음을 보장 할 수 없습니다.
PUT는 서버에 리소스를 추가하거나 업데이트하기위한 것입니다.
PUT 메소드는 동봉 된 엔티티가 제공된 Request-URI 아래에 저장되도록 요청합니다. Request-URI가 이미 존재하는 자원을 참조하는 경우, 동봉 된 엔티티는 원본 서버에있는 것의 수정 된 버전으로 간주되어야합니다 (SHOULD). Request-URI가 기존 리소스를 가리 키지 않고 해당 URI가 요청하는 사용자 에이전트에 의해 새 리소스로 정의 될 수있는 경우 원본 서버는 해당 URI로 리소스를 생성 할 수 있습니다.
전체 사양을 보려면 다음을 방문하십시오.
안타깝게도 현재 브라우저는 HTML 형식의 POST 및 GET 이외의 다른 동사를 지원하지 않기 때문에 일반적으로 HTTP를 최대한 활용할 수 없습니다 (하지만 JavaScript를 통해 제출물을 가로 챌 수 있음). HTML 형식에서 이러한 메서드에 대한 지원이 없기 때문에 예를 들어 동사를 포함하는 URI가 발생했습니다.
POST http://example.com/order/1/delete
또는 더 나쁜
POST http://example.com/deleteOrder/id/1
HTTP를 통해 CRUD 의미 체계를 효과적으로 터널링합니다. 그러나 동사는 URI의 일부가 될 수 없습니다. 대신 HTTP는 이미 HTTP 메서드를 통해 리소스 (예 : 주문)를 CRUD하는 메커니즘과 의미를 제공합니다. HTTP는 단순한 데이터 터널링 서비스가 아닌 프로토콜입니다.
따라서 웹 서버에서 리소스를 삭제하려면 다음을 호출합니다.
DELETE http://example.com/order/1
업데이트하려면
PUT http://example.com/order/1
그런 다음 웹 서버가 적용 할 수 있도록 PUT 본문에 업데이트 된 리소스 표현을 제공합니다.
따라서 REST API에 대한 일종의 클라이언트를 빌드하는 경우 PUT 및 DELETE 요청을 보내도록 할 수 있습니다. 이것은 브라우저 내에 구축 된 클라이언트 일 수 있습니다. 예를 들어 JavaScript를 통해 요청을 전송하거나 서버에서 실행되는 도구 등이 될 수 있습니다.
자세한 내용은 다음을 방문하십시오.
- http://martinfowler.com/articles/richardsonMaturityModel.html
- 대부분의 웹 브라우저에서 PUT, DELETE, HEAD 등의 방법을 사용할 수 있습니까?
- HTML 양식에 PUT 및 DELETE 메소드가없는 이유
- 양식에서 PUT 및 DELETE를 사용해야합니까?
- http://amundsen.com/examples/put-delete-forms/
- http://www.quora.com/HTTP/Why-are-PUT-and-DELETE-no-longer-supported-in-HTML5-forms
GET, POST, DELETE, PUT 등과 같은 HTTP 요청 동사를 사용하면 RESTful 웹 애플리케이션을 빌드 할 수 있습니다. 여기에서 읽어보세요 : http://en.wikipedia.org/wiki/Representational_state_transfer
이점을 확인하는 가장 쉬운 방법은이 예를 보는 것입니다. 모든 MVC 프레임 워크에는 Router/Dispatcher
URL을 actionController에 매핑 하는 것이 있습니다. 따라서 URL은 다음과 같습니다. /blog/article/1
호출됩니다. blogController::articleAction($id);
이제이 라우터는 URL 또는/blog/article/1/
그러나 라우터가 URL 대신 전체 HTTP 요청 객체를 인식한다면 HTTP 요청 동사 (GET, POST, PUT, DELETE ...) 및 현재 HTTP 요청에 대한 기타 많은 유용한 정보에 액세스 할 수 있습니다.
그러면 동일한 URL을 수락하고 HTTP 요청 동사에 따라 다른 actionController에 매핑 할 수 있도록 애플리케이션을 구성 할 수 있습니다.
예를 들면 :
if you want to retrive article 1 you can do this:
GET /blog/article/1 HTTP/1.1
but if you want to delete article 1 you will do this:
DELETE /blog/article/1 HTTP/1.1
Notice that both HTTP Requests have the same URI, /blog/article/1, the only difference is the HTTP Request verb. And based on that verb your router can call different actionController. This enables you to build neat URL-s.
Read this two articles, they might help you:
These articles are about Symfony 2 framework, but they can help you to figure out how does HTTP Requests and Responses work.
Hope this helps!
Safe Methods : Get Resource/No modification in resource
Idempotent : No change in resource status if requested many times
Unsafe Methods : Create or Update Resource/Modification in resource
Non-Idempotent : Change in resource status if requested many times
According to your requirement :
1) For safe and idempotent operation (Fetch Resource) use --------- GET METHOD
2) For unsafe and non-idempotent operation (Insert Resource) use--------- POST METHOD
3) For unsafe and idempotent operation (Update Resource) use--------- PUT METHOD
3) For unsafe and idempotent operation (Delete Resource) use--------- DELETE METHOD
'developer tip' 카테고리의 다른 글
어느 것이 더 나은 H2 또는 HSQLDB입니까? (0) | 2020.09.22 |
---|---|
Java에서 클래스 불변이란 무엇입니까? (0) | 2020.09.22 |
redis에서 "HSET"자식 키를 "EXPIRE"하는 방법은 무엇입니까? (0) | 2020.09.22 |
git push origin HEAD는 무엇을 의미합니까? (0) | 2020.09.22 |
Ruby의 다른 괄호는 무엇을 의미합니까? (0) | 2020.09.22 |