我在ASP.NET MVC3应用程序中使用HTTP PUT和DELETE 。 当我在本地运行它时,所有东西都能正常工作。 但是,当我将应用程序发布到服务器时,这些方法不起作用。 是否有任何特殊的设置来启用Web服务器来支持PUT和DELETE请求? 我正在使用与IIS 7.5共享主机。 更新: 我在IIS manager启用PUT和DELETE请求。 PUT命令工作正常。 但是DELETE仍然不起作用。 我通过jQuery创build请求: 我在这个页面: http://domain.com/dashboard/edit-site/103323/links/ 和我的阿贾克斯电话是: $.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 […]
我试图使用CURL这样的请求: curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 其中OXYugGKg207g5uN/07V是一个散列,所以我想我需要进行编码之前做这个请求。 我试过curl -X DELETE –data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 有些想法?
支持数据服务的反删除或延迟/批处理删除是相当常见的要求。 我想知道的是如何以一种RESTful的方式来实现这一点。 我在几个不同的select之间撕裂(其中没有一个对我来说似乎非常有吸引力)。 我相信,在这些不同的选项中,通常需要一个API,它将所有标记为已删除的资源都返回给特定的资源types。 这里有一些我曾经考虑的选项和一些优点/缺点: 将资源标记为已删除的选项: 使用HTTP DELETE将资源标记为已删除。 使用HTTP PUT / POST来更新已删除的标志。 这不正确,因为它将本质上是从HTTP DELETE方法中删除的内容映射到其他HTTP方法。 GET-ing资源标记为删除时的选项: 为标记为已删除的资源返回HTTP状态404。 清洁和透明,但我们如何区分真正被删除的资源和被标记为已删除的资源之间的区别。 返回HTTP状态410.提供方式来区分不同的情况,但是技术上来说410“被认为是永久性的。具有链接编辑能力的客户端应该在用户批准后删除对Request-URI的引用。 在这里“预计”和“应该”可能有足够的摆动空间。 不知道在客户端支持/理解410。 返回HTTP状态200并且包括标志字段指示资源被删除。 这看起来很奇怪,因为首先删除它的想法是因为你真的希望它不出现。 这将过滤掉已删除资源的责任推到了客户端。 包含此已删除资源的回复选项: 省略被删除的资源。 干净简单。 但是如果你真的想知道被删除的资源呢? 将它们与字段一起包括在内,表示它们已被删除。 这将过滤掉已删除资源的责任推到了客户端。 如果您只想通过活动或已删除的资源进行分页,分页会变得非常棘手。 更新标记为删除的资源时的选项: 使用HTTP状态404.资源是否正确? 但是,怎样才能区分标记为已删除的资源和实际删除的资源。 404响应中的HTTP主体可能会在这里消除歧义,但是客户端仍然会parsing/解释你的身体以消除歧义。 也许响应标题可能有帮助吗? 哪一个? 自定义标题? 使用HTTP状态409以及有关资源如何首先被取消删除的消息。 取消删除标记为删除的资源的选项: 使用HTTP PUT / POST进行资源更新操作,并将其标记为活动状态。 只有当您没有为资源的GET操作返回一个HTTP 404时,它才会起作用,因为它不会因为PUT / POST而导致资源“找不到”(404)。 使用HTTP PUT / POST进行资源的创build操作。 这里的问题是哪些数据优先? 在创build操作中发送的数据? 或者正在取消删除的数据? 将其从任何其他将返回的查询中筛选出来。 […]
我假设响应代码200总是允许一个响应主体,但我找不到任何明确提到的DELETE请求的响应主体。
所以,鉴于Http中的DELETE动词是幂等的,当我发出以下请求时,第二个(或第三个或第四个等等)会发生什么? DELETE /person/123 第一次,资源被删除,我返回一个204(成功,没有内容)。 我应该在随后的电话或404(未find)返回204?
根据“REST思想”,PUT / POST / DELETE请求的响应正文中应该包含哪些内容? 那么返回码呢? HTTP_OK足够了吗? 这样的约定是什么原因呢? 我find了一个很好的post来描述POST / PUT的区别: POST vs PUT但是它仍然不能回答我的问题。
我试图使用HttpDelete对象来调用Web服务的删除方法。 Web服务的代码parsing消息正文中的JSON。 但是,我无法理解如何将身体添加到HttpDelete对象。 有没有办法做到这一点? 使用HttpPut和HttpPost,我调用setEntity方法并传入我的JSON。 似乎没有任何这样的HttpDelete的方法。 如果没有办法设置一个HttpDelete对象的主体,请把我链接到一个使用超类HttpDelete的资源,以便我可以设置方法(删除)并设置一个主体。 我知道这是不理想的,但在这一点上,我不能改变networking服务。
我一直在通过微软的ASP.NET MVC教程,结束在这个页面 http://www.asp.net/learn/mvc/tutorial-32-cs.aspx 以下是对本页底部的说明: 通常,在调用修改Web应用程序状态的操作时,您不希望执行HTTP GET操作。 执行删除时,您想要执行HTTP POST,或者更好的是执行HTTP DELETE操作。 这是真的? 任何人都可以为这个陈述背后的理由提供更详细的解释吗? 编辑 维基百科声明如下: 有些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全的,这意味着它们仅用于信息检索,不应该改变服务器的状态。 相比之下,诸如POST,PUT和DELETE等方法用于可能会在服务器上导致副作用的操作
我想知道是否有可能通过java.net.HttpURLConnection发送PUT,DELETE请求(实际上)到基于HTTP的URL。 我已经阅读了很多文章描述如何发送GET,POST,TRACE,OPTIONS请求,但是我仍然没有find任何成功执行PUT和DELETE请求的示例代码。