根据HTTP/1.1规范:
该
POST方法用来请求原始服务器接受被附在请求由标识的资源的新下属实体Request-URI的Request-Line
换句话说,POST用于创建.
该
PUT方法请求将所包含的实体存储在提供的实体下Request-URI.如果Request-URI引用已经存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本.如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源.
也就是说,PUT用于创建或更新.
那么,应该使用哪一个来创建资源?或者需要支持两者?
GET:$.get(..)
POST:$.post()..
怎么样PUT/DELETE?
我的情况是我正在建模"您确定要删除它吗?" 场景.在某些情况下,资源的状态表明请求的删除可能无效.你可以想象一些自己需要确认删除的场景
我们采用的解决方案是将参数传递给删除请求以指示可以继续删除("?force_delete = true")
例如
DELETE http://server/resource/id?force_delete=true
Run Code Online (Sandbox Code Playgroud)
我相信它仍然是宁静的:
(a)DELETE的语义没有被改变 - 用户仍然可以发送正常的DELETE请求,但这可能会失败,409响应的主体将解释原因.我说可能会失败,因为(出于不值得解释的原因)在某些情况下没有理由提示用户.
(b)Roy的论文中没有任何内容表明它违背了REST的精神 - 为什么会有,因为HTTP只是REST的一个实现,所以为什么传递HTTP参数很重要
有人能指出一个明确的陈述,指出为什么这不是RESTful?
在一个相关的问题上,如果用户没有指定force_delete然后我正在返回409 Conflict- 这是最合适的响应代码吗?
经过一些进一步的研究,我认为向DELETE添加参数可能违反了几个原则.
首先,实施可能违反了"统一界面"(参见Roy的论文第5.1.5节)
通过添加'force_delete',我们在已经很好定义的DELETE方法上添加了一个额外的约束.这种约束只对我们有意义.
您还可能认为它违反了"5.1.2客户端 - 服务器",因为确认对话确实是UI问题,并且并非所有客户端都希望确认删除.
有人建议吗?
构建RESTful资源以重置密码的正确方法是什么?
此资源旨在成为丢失或忘记密码的人的密码重置程序.它使旧密码无效并通过电子邮件向他们发送密码.
我有两个选择:
POST /reset_password/{user_name}
Run Code Online (Sandbox Code Playgroud)
要么...
POST /reset_password
-Username passed through request body
Run Code Online (Sandbox Code Playgroud)
我很确定请求应该是POST.我没有信心选择一个合适的名字.而且我不确定是否应该通过URL或请求正文传递user_name.
我已经阅读了很多相关内容,但无法就此主题得出结论.
但我从未使用过PUT或DELETE HTTP Request方法.我倾向于在系统(我的应用程序或网站)的统计数据可能不受影响(如产品列表)时使用GET,并在受影响时使用POST(下订单).是不够还是我错过了什么?
我正在寻找一种简单的方法来调试RESTful服务.例如,大多数Web应用程序都可以使用普通的Web浏览器进行调试.不幸的是,相同的浏览器不允许我测试HTTP PUT,DELETE,甚至在某种程度上测试HTTP POST.
我不打算自动化测试.我想通过快速的健全性检查来运行新服务,理想情况下无需编写自己的客户端.
是否可以在JavaScript中仅使用XMLHTTPRequest来执行HTTP头请求?
我的动机是节省带宽.
如果没有,是否有可能伪造它?
jQuery.ajax()的jQuery文档说明如下:
注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们.
jQuery本身表示它支持IE 6.0 +,FF 2 +,Safari 3.0 +,Opera 9.0+和Chrome.那么上面哪个(如果有的话)不支持HTTP DELETE?
因为服务器端只接受PUT方法,所以我method='PUT'在HTML表单中使用.但是浏览器没有按预期使用方法PUT,它是GET.当我设置method='POST'它POST.
我不知道为什么method='PUT'不起作用.我在Chrome和Firefox上测试过.
http ×4
rest ×4
javascript ×3
ajax ×2
html ×2
httprequest ×2
jquery ×2
put ×2
debugging ×1
firefox ×1
forms ×1
http-headers ×1
post ×1
web ×1