除了GET和POST之外,你如何从浏览器向RESTful应用程序发送任何内容?

时间:2009-03-22 16:28:09

标签: http rest

我没有得到RESTful的东西。是的,我知道如何从我的浏览器向我的应用程序发送GET请求。这是通过URL链接。

<a href="/user/someone">

还可以通过表单方法发送POST请求。

<form method="post">

除此之外,我知道浏览器有时会发送HEAD命令来确定页面状态,但最终用户无法控制。

然后我正在阅读的那些DELETE和PUT命令是什么?如何从浏览器向RESTful应用程序发送DELETE命令?

7 个答案:

答案 0 :(得分:5)

HTML 4.01 specification仅将GETPOST描述为valid values for the method attribute。所以在HTML中,到目前为止还没有办法描述其他方法。

但是HTML 5 specification(目前只是一份工作草案)确实将PUTDELETE命名为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,浏览器不是理想的客户端,部分原因是缺少GETPOST之外的HTTP方法。但是,如果您确实希望从浏览器中执行此操作,则可以使用AJAX发送PUTDELETE,例如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)

DELETEPUT是HTTP动词,例如REST命令,它将删除或更新服务器上的对象。

可以通过不同方式在浏览器中使用它们。您不能通过HTML发送它们,但如果要以编程方式使用它们,则可以发送JavaScript Ajax请求。

如果您只想浏览API或测试某些调用,并且想从浏览器中执行此操作,则可以将RESTED之类的浏览器插件用于Firefox。

对于手动和自动测试,您可以将Postman用作功能齐全的API测试环境。

在Windows上,您可以使用PowerShell脚本httprepl发送不同的HTTP RESTful API用法。