环顾四周,除了GET和POST请求之外,我无法命名使用任何内容的单个Web应用程序(不是Web服务).这有什么特别的原因吗?某些浏览器(或服务器)不支持任何其他类型的请求吗?或者这仅仅是出于历史原因?我想利用PUT和DELETE请求让我的生活在服务器端变得更容易,但我不愿意,因为没有其他人这样做.
实际上相当多的人使用PUT和DELETE,主要用于非浏览器API.一些示例是Atom发布协议和Google Data API:
http://www.ietf.org/rfc/rfc5023.txt
http://code.google.com/apis/gdata/docs/2.0/basics.html
除此之外,您没有看到PUT/DELETE的常见用法,因为大多数浏览器不支持PUT和DELETE通过Forms.HTML5似乎正在解决这个问题:
http://www.w3.org/TR/html5/forms.html#form-submission-0
它适用于浏览器应用程序的方式是:人们在设计RESTful应用程序时考虑到PUT和DELETE,然后通过来自浏览器的POST"隧道"这些请求.例如,看看这个关于Ruby on Rails如何使用隐藏字段完成此操作的问题:
如何为Rails和GWT模拟PUT/DELETE?
因此,您不会自己设计具有更大HTTP动词集的应用程序.
编辑:顺便说一句,如果你对基于浏览器的表单帖子中缺少PUT/DELETE的原因感到好奇,那么事实证明没有真正好的技术原因.在休息讨论邮件列表上阅读这个帖子,特别是罗伊菲尔丁的评论,对某些背景来说很有意思:
http://tech.groups.yahoo.com/group/rest-discuss/message/9620?threaded=1&var=1&l=1&p=13
编辑:有一些评论AJAX库是否支持所有方法.它确实归结为XMLHttpRequest的实际浏览器实现.我认为有人可能会发现这个链接很方便,它会测试你的浏览器以查看HttpRequest对象与各种HTTP选项的兼容性.
http://www.mnot.net/javascript/xmlhttprequest/
不幸的是,我不知道收集这些结果的参考资料.
很简单,HTML 4.01 form
元素只允许其属性中的值" POST
"和" GET
"method