根据"REST意识形态",PUT/POST/DELETE请求的响应主体应该是什么?
返回代码怎么样?是否HTTP_OK
足够?
如果有的话,这些公约的原因是什么?
我发现了一篇描述POST/PUT差异的好帖子:POST vs PUT 但它仍然没有回答我的问题.
我想知道是否可以将PUT,DELETE请求(实际上)发送java.net.HttpURLConnection
到基于HTTP的URL.
我已经阅读了很多文章,描述了如何发送GET,POST,TRACE,OPTIONS请求,但我仍然没有找到任何成功执行PUT和DELETE请求的示例代码.
因此,假设Http中的DELETE谓词是幂等的,当我发出以下请求时,第二个(或第三个,或第四个,等等)会发生什么?
DELETE /person/123
Run Code Online (Sandbox Code Playgroud)
第一次,资源被删除,我返回204(成功,没有内容).我应该在后续电话或404(未找到)上返回204吗?
我假设响应代码200总是允许响应主体,但我找不到任何明确提及DELETE请求的响应主体.
我使用HTTP PUT
和DELETE
我的ASP.NET MVC3应用.当我在本地运行时,每件事都能正常工作; 但是当我将应用程序发布到服务器时,这些方法不起作用.
是否有任何特殊设置可以使Web服务器支持PUT
和DELETE
请求?我正在使用IIS 7.5的共享主机.
更新:
我启用PUT
并DELETE
请求IIS manager
.PUT
命令工作正常.但DELETE
仍然行不通.我创建请求jQuery
:
我在这个页面:
http://domain.com/dashboard/edit-site/103323/links/
Run Code Online (Sandbox Code Playgroud)
我的ajax电话是:
$.ajax({
// url: same as page-url,
cache: false,
type: 'DELETE',
data: { linkid: $(link).data("linkid") },
beforeSend: function () {
// doing something in UI
},
complete: function () {
// doing something in UI
},
success: function (data) {
// doing something in UI
},
error: function () { …
Run Code Online (Sandbox Code Playgroud) 我读过以下内容:
超文本传输协议(HTTP)是网络的生命.每次传输文档或发出AJAX请求时都会使用它.但是,令人惊讶的是,在某些Web开发人员中,HTTP相对未知.
HTTP谓词构成了我们"统一接口"约束的主要部分,并为我们提供了与基于名词的资源相对应的动作.主要或最常用的HTTP谓词(或方法,因为它们被正确调用)是POST,GET,PUT和DELETE.
好吧,我们突然忘记了事情.
PUT
并且DELETE
,他们说.我只听说过POST
和GET
,从来没有见过类似的东西$_PUT
或者$_DELETE
在我曾经看到任何PHP代码经过.
这些方法(PUT)和(DELETE)是什么,如果可以在PHP中使用它们,我将如何解决这个问题.
注意:我知道这不是一个真正的问题但我总是抓住一个学习机会,如果我看到一个,并且非常想学习在PHP中使用这些方法,如果可能的话.
支持数据服务的取消删除或延迟/批量删除是一个相当普遍的要求.我想知道的是如何以RESTful方式实现它.我在几个不同的选择之间徘徊(其中没有一个对我来说似乎非常有吸引力).我认为,这些不同选项的共同点是需要一个API,它返回标记为特定资源类型的已删除的所有资源.
以下是我考虑过的一些选项以及它们的一些优点/缺点:
将资源标记为已删除的选项:
GET-ing资源标记为删除时的选项:
包含此已删除资源的响应选项:
更新标记为删除的资源时的选项:
取消删除标记为删除的资源的选项:
这绝不是一份详尽的清单.我只是想列举一些在我脑海中蹦蹦跳跳的选项.
我知道如何做到这一点的答案就像往常一样,"它取决于".我很好奇的是你会用什么资格/要求做出决定?您是如何看待自己实施或实施的?
我正在尝试使用CURL这样的请求:
curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V"
Run Code Online (Sandbox Code Playgroud)
哪里OXYugGKg207g5uN/07V
是哈希,所以我想我需要在执行此请求之前进行编码.
我试过了 curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"
一些想法?
我正试图从Angular 2前端与一个有点RESTful的API交谈.
要从集合中删除某些项目,除了可以附加到URL之外,我还需要发送一些其他数据(即可以附加到URL),即身份验证令牌,某些集合信息和一些辅助数据.
我发现这样做最直接的方法是将身份验证令牌放入请求标头和正文中的其他数据.
但是,Angular 2的Http模块并不完全赞同带有正文的DELETE请求,并尝试发出此请求
let headers= new Headers();
headers.append('access-token', token);
let body= JSON.stringify({
target: targetId,
subset: "fruits",
reason: "rotten"
});
let options= new RequestOptions({headers:headers});
this.http.delete('http://testAPI:3000/stuff', body,options).subscribe((ok)=>{console.log(ok)}); <------line 67
Run Code Online (Sandbox Code Playgroud)
给出了这个错误
app/services/test.service.ts(67,4): error TS2346: Supplied parameters do not match any signature of call target.
Run Code Online (Sandbox Code Playgroud)
现在,我在语法方面做错了吗?我很确定每个RFC都支持DELETE主体
是否有更好的方式来发送数据?
或者我应该将其转储到标题中并将其称为一天?
任何关于这个难题的见解都将受到赞赏
我在ReactJS中编程时正在使用Axios,我假装向我的服务器发送DELETE请求.
为此,我需要标题:
headers: {
'Authorization': ...
}
Run Code Online (Sandbox Code Playgroud)
而身体是由
var payload = {
"username": ..
}
Run Code Online (Sandbox Code Playgroud)
我一直在网络中搜索,只发现DELETE方法需要一个"param"并且不接受"数据".
我一直试图像这样发送它:
axios.delete(URL, payload, header);
Run Code Online (Sandbox Code Playgroud)
甚至
axios.delete(URL, {params: payload}, header);
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何作用......
有人可以告诉我它是否可能(我认为是)发送带有标题和正文的DELETE请求以及如何执行此操作?
先感谢您!