주위를 둘러 보니 GET 및 POST 요청 외에도 다른 것을 사용하는 단일 웹 응용 프로그램 (웹 서비스 아님)을 지정할 수 없습니다. 이것에 대한 특별한 이유가 있습니까? 일부 브라우저 (또는 서버)가 다른 유형의 요청을 지원하지 않습니까? 아니면 역사적인 이유로 만인가? PUT 및 DELETE 요청을 사용하여 서버 측에서 내 인생을 조금 더 편하게하고 싶습니다.하지만 다른 사람이하지 않기 때문에 나는 마지 못해합니다.웹 애플리케이션에서 HTTP PUT 및 DELETE를 사용하지 않는 이유가 있습니까?
답변
실제로 대부분의 사람들은 PUT 및 DELETE를 사용하며, 대부분 브라우저가 아닌 API에 사용됩니다. 당신은 대부분의 브라우저는하지 않기 때문에 일반적인 사용에서 삭제 PUT 참조 /하지 않는, 그 너머
: 몇 가지 예는 아톰 출판 프로토콜 및 Google 데이터 API를이다 Forms를 통해 PUT 및 DELETE를 지원합니다. HTML5이 고정 것 같다 :
는 브라우저 응용 프로그램에 적용하는 방법은 다음과 같습니다 사람들은 게시물을 통해 다음 "터널"이러한 요청을 PUT과 함께 편안하고 응용 프로그램을 설계하고 마음에 DELETE 브라우저. 그래서
는 HTTP의 큰 세트로 응용 프로그램을 디자인 당신의 자신에하지 않을 것이다 : 레일에 루비를 사용하여이 숨겨진 필드를 수행하는 방법을 예를 들어,에이 SO 질문 참조 동사 마음에.
편집 : 그런데 브라우저 기반 양식 게시물에서 PUT/DELETE가 누락 된 이유에 대해 궁금한 점이 있다면 기술적 인 이유가 없습니다. 나머지-논의 메일 링리스트, 특히 로이 필딩의 의견에이 스레드 주위를 읽는 것은 어떤 상황에 대한 흥미 롭다 :
편집 : AJAX 라이브러리 여부에 대한 몇 가지 의견이 모든 방법이 지원됩니다 . XMLHttpRequest의 실제 브라우저 구현으로 바뀌 었습니다. 브라우저가 HttpRequest 객체가 다양한 HTTP 옵션을 얼마나 준수하는지 확인하기 위해이 링크를 쉽게 찾을 수있을 것이라고 생각했습니다. http://www.mnot.net/javascript/xmlhttprequest/
- 불행하게도, 나는이 결과를 수집하는 기준을 알고하지 않습니다.
거친 보안 정책이있는 일부 프록시 서버는 정책을 삭제할 수 있습니다. 나는 PUT과 DELETE를 사용하고 있습니다.
일부 브라우저는 다른 HTTP 메서드를 제대로 지원하지 않지만 일부 이름은 지정할 수 없습니다.
레일즈는 특히 브라우저가 이러한 메소드를 지원하지 않더라도 명시 적으로이를 설정하기 위해 메소드 매개 변수로 양식을 패키징합니다. 당신이 이것을하려고한다면 그것은 합당한 예방책처럼 보입니다.
은 아주 간단하게 HTML 4.01 form
element는이 브라우저와 Ajax 라이브러리에 따라 그 method
속성
의 값 "POST
"와 "GET
"을 할 수 있습니다. 예를 들어 jQuery은 브라우저가 지원하지 않더라도 모든 HTTP 메소드를 지원합니다. 예를 들어 jQuery "ajax" documentation의 'type'속성을 참조하십시오.
Restlet Java 프레임 워크를 사용하면 HTML POST 작업을 통해 PUT 및 DELETE 요청을 터널링 할 수 있습니다. 이렇게하려면, 당신은 단지 예를 들어, 당신의 URI의 쿼리 문자열에 삭제 = 넣어 또는 방법 = 방법을 추가
http://www.example.com/user=xyz?method=delete ...
이 동일하다 루비 (위 @ars에 의해 설명 된 바와 같이) 레일 '접근합니다.
jQuery 문서에서 "PUT 및 DELETE와 같은 다른 HTTP 요청 방법도 여기에서 사용할 수 있지만 모든 브라우저에서 지원하지는 않습니다." 그래서 당신은 틀렸어. –
나는 HTTP의 모든 기능을 사용한다고 말하면 브라우저는 저주받을 수 있습니다. 어쩌면 앞으로 나아갈 HTTP 프로토콜의보다 완전하고 적절한 사용에 영감을 줄 수있을 것입니다. POST 및 GET보다 그물에서 더 많은 일이 발생합니다. 시간 브라우저 구현 정보는이를 반영합니다.
하하, 그러길 바래. 불행히도 내 웹 응용 프로그램을 * 작동하지 않는 것으로 생각하지 않습니다 * 사용자를 분노 이외에 아무것도 할 것입니다. :) –
흠 ... 그래, 네가 요점을 가지고 있다고 생각해. 오 잘, 그것은 좋은 생각이었다. – codemonkey
하지만 기다려 ... 마이크로 소프트에서 작동합니다 ... – codemonkey
개인적으로 웹 응용 프로그램에서 PUT 또는 DELETE를 사용하는 데 어떤 목적도 실제로 보이지 않습니다. 응용 프로그램이 수행하는 모든 작업은 읽기 또는 쓰기, 일명 입력 출력입니다. HTTP 요청의 헤더에서 작업의 성격을 구분해야하는 이유는 무엇입니까? 양식의/object/object_id가 동일한 URL 인 을 사용하여 ajax를 호출하고 삭제, 업데이트, 값 가져 오기 또는 만들기와 같은 여러 작업을 수행 할 수 있습니다. URL을 보면 단지 어떤 URL인지 알 수 없습니다. GET 및 POST를 사용하여 만 내 URL이 될 것입니다 :
/객체/ID가 삭제/
/객체/ID 생성/
/객체/아이디/업데이트
/객체/ID -> 암시 GET
등 내 제한된 경험을 바탕으로
, 이것은 많은 경우에 숨겨진 헤더 요청 유형보다 훨씬 청소기입니다. PUT 또는 DELETE를 절대로 사용해서는 안된다는 말은 아니며 꼭 필요한 경우에만 사용하십시오.RESTful 웹 API에서 HTTP 요청 방법과 관련된 다양한 사용 사례 및 규칙에 대해 자세히 알아 보려면 Leonard Richardson의 "RESTful Web API"를 참조하십시오.
- 1. JSONP를 사용하지 않는 이유가 있습니까?
- 2. CustomAttributes를 사용하지 않는 이유가 있습니까?
- 3. Boost :: shared_ptrs를 사용하지 않는 이유가 있습니까?
- 4. UserControls를 사용하지 않는 성능상의 이유가 있습니까?
- 5. 프로그램 레지스트리 설정을 사용하지 않는 이유가 있습니까?
- 6. UIImageView의 하위 클래스를 사용하지 않는 이유가 있습니까?
- 7. 포스트 또는 URL에 _method = PUT/DELETE를 저장해야합니까?
- 8. Rails와 GWT에서 PUT/DELETE를 에뮬레이트 할 수 있습니까?
- 9. Apache2 및 PHP에서 HTTP PUT 및 DELETE를 활성화하고 사용하는 방법은 무엇입니까?
- 10. HTTP PUT 파일
- 11. 모든 것에 UTF-8, 16 등을 사용하지 않는 이유가 있습니까?
- 12. 쉘에서 http-delete를 사용하는 방법
- 13. 코어 데이터 엔티티에서 동일한 속성 이름을 사용하지 않는 이유가 있습니까?
- 14. HTTP 요청에 Winsock을 사용하지 않는 이유는 무엇입니까?
- 15. 브라우저를 사용하여 PUT 또는 DELETE HTTP 요청을 보낼 수 있습니까?
- 16. 데이터베이스 테이블의 인덱스에 auto_increment를 사용하지 않는 이유가 있습니까?
- 17. 시스템 네임 스페이스에서 별칭을 사용하지 않는 이유가 있습니까?
- 18. 모든 텍스트 필드에 ntext를 사용하지 않는 이유가 있습니까
- 19. Node.js로 HTTP PUT 요청
- 20. 브라우저에서 HTTP PUT 수행
- 21. PUT, POST 및 DELETE를 포함하여 C#에서 REST를 소비하는 방법은 무엇입니까?
- 22. 항목 액세스 대신 get/put 메서드를 사용해야하는 이유가 있습니까?
- 23. Spring 웹 애플리케이션에서 HTTP 프록시 설정하기
- 24. Java : HTTP PUT (HttpURLConnection 포함)
- 25. HTTP PUT 방식 구조의 예를
- 26. Silverlight 4에서 HTTP PUT 및 DELETE 작업을 수행하는 방법
- 27. C에서 HTTP PUT 메서드 구현
- 28. Coldfusion 8 및 HTTP PUT - 개체를 PUT 할 수있는 방법이 있습니까?
- 29. jQuery : 클릭 및 기타 기능에 항상 live()를 사용하지 않는 이유가 있습니까?
- 30. DELETE 및 PUT HTTP 동사가 모든 브라우저에서 작동합니까?
맞춰보세요. 최신 버전 (2010 년 10 월 19 일)에서는 HTML5의 PUT/DELETE 지원이 제거 된 것처럼 보입니다. http://www.w3.org/TR/html5/forms.html#form-submission-0 –
@Xie : 흥미로운 찾기. 나에게 역효과가있는 것 같아 ... –