我没有得到RESTful的东西。是的,我知道如何从我的浏览器向我的应用程序发送GET请求。这是通过URL链接。
<a href="/user/someone">
还可以通过表单方法发送POST请求。
<form method="post">
除此之外,我知道浏览器有时会发送HEAD命令来确定页面状态,但最终用户无法控制。
然后我正在阅读的那些DELETE和PUT命令是什么?如何从浏览器向RESTful应用程序发送DELETE命令?
答案 0 :(得分:5)
HTML 4.01 specification仅将GET
和POST
描述为valid values for the method
attribute。所以在HTML中,到目前为止还没有办法描述其他方法。
但是HTML 5 specification(目前只是一份工作草案)确实将PUT
和DELETE
命名为valid values。
在JavaScript(AJAX
),XMLHttpRequest object specification中查看用于异步请求的it supports the PUT
and DELETE
methods(目前也只是一个工作草案),但是没有说明当前浏览器的实际支持。
答案 1 :(得分:3)
要模拟PUT和DELETE,像Rails这样的框架会构建如下形式:
<form action="/users/1/delete" method="post">
<input type="hidden" name="_method" value="delete" />
<input type="submit" value="Delete user 1" />
</form>
这实际上是一个POST表单,但是使用隐藏的_method
输入来告诉服务器哪个方法真正意图。您也可以在任何其他Web框架上实现此支持。
答案 2 :(得分:3)
@C Moran是对的:如果你想成为真正的REST,浏览器不是理想的客户端,部分原因是缺少GET
和POST
之外的HTTP方法。但是,如果您确实希望从浏览器中执行此操作,则可以使用AJAX发送PUT
和DELETE
,例如YUI's Connection Manager允许您指定以下任何HTTP方法:
GET
POST
HEAD
PUT
DELETE
答案 3 :(得分:2)
我听说所有浏览器都不完全支持DELETE和PUT(我没有检查过)。 Rails正在做解决方法 - 它发送一个包含真实方法的隐藏字段的POST。所以它真的只使用GET和POST,并且在服务器上它会读取这个隐藏的字段并对其作出反应。
答案 4 :(得分:2)
POST不必通过表单。了解这一点以及GET,PUT和DELETE的最佳方法是使用ReST客户端发出HTTP请求并查看响应。我建议你从http://restclient.org/
下载漂亮的小python客户端当您熟悉ReST时,浏览器(截至目前)不是您使用的最佳工具。像上面这样的客户端将允许您“查看”您的HTTP请求和响应。
答案 5 :(得分:1)
基于Flash的应用程序(或Flex)可以在较低级别上运行,例如打开套接字。它们也可以执行PUT / DELETE(尽管已知Flex特别容易出现http标头。 所以我想我说这取决于你的客户端技术。特别是,如果您的浏览器不支持它(或者您不想实现跨浏览器支持),您可以嵌入一个小的flash对象来为您进行通信。
答案 6 :(得分:-1)