相关疑难解决方法(0)

实体主体是否允许HTTP DELETE请求?

发出HTTP DELETE请求时,请求URI应完全标识要删除的资源.但是,是否允许添加额外的元数据作为请求的实体主体的一部分?

rest http

651
推荐指数
13
解决办法
36万
查看次数

使用REST删除多个记录

什么是删除多个项目的REST-ful方式?

我的用例是我有一个Backbone Collection,我需要能够一次删除多个项目.选项似乎是:

  1. 发送每条记录的DELETE请求(如果有可能存在数十个项目,这似乎是一个坏主意);
  2. 发送一个DELETE,其中要删除的ID在URL中串在一起(即"/ records/1; 2; 3");
  3. 以非REST方式,发送包含标记为删除的ID的自定义JSON对象.

所有选项都不太理想.

这似乎是REST约定的灰色区域.

api rest backbone.js

80
推荐指数
4
解决办法
5万
查看次数

REST - 删除对象集合

这样的事情可能吗?设计REST的人是否认为他们会永远删除一个东西?

所以,假设我有10个Foo的ID 1-10

我想通过一次HTTP DELETE调用删除ID的3,6和9.

在没有得罪教皇的情况下,我能做到这一点吗?

rest web-services http

7
推荐指数
2
解决办法
6017
查看次数

宁静只适用于Web服务,还是适用于Web服务和Web页面?

我阅读了很多关于PHP的Restful教程.

(我不想深入探讨为什么我不使用RoR.这是由于团队更熟悉PHP)

因为我们计划将来扩展到API,所以我认为实现Restful Web服务很重要.

我看了很多教程

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

显然宁静是为web服务.

网页怎么样?它们也可以是RESTFUL吗?

如果答案是否定的,请不要超出这条线并告诉我.谢谢.

我知道让网址看起来像RESTFUL网址就是简单地使用mod_rewrite.但是,我很确定,宁静的架构不仅仅是让网址看起来不错.

例如,我在名为list.php的网页上有一个项目列表.每个项目旁边都有一个删除链接.例如,list.php?id = 1&deleteitem

当有人点击list.php?id = 1&deleteitem链接时,我会回到同一个list.php文件并检查$ _GET中的param deleteitem.

如果检测到,我将根据$ _GET中的参数id从数据库中删除.

之后我将重定向回list.php没有任何参数.

我想知道,我如何使整个流程RESTFUL?

我问,因为在REST中,要删除一些你需要使用HTTP请求方法(DELETE).

很明显,在我的链接中,它们都很简单 <a href="list.php?id=1&deleteitem">Delete</a>

请赐教.

我的编程并不那么强大,如果给出的建议尽可能地成为外行,那将是很好的.

谢谢.

编辑

我有2个跟进问题.

问题1)由于这是一个带分页的项目列表,如果我想让它成为RESTful,URL会是什么样子?

问题2)因为我在列表中的每个项目旁边放置DELETE链接,我现在明白了,我应该使用

<form method="POST">
<input type=hidden name="_method" value="delete">
<input type="submit" >
</form>
Run Code Online (Sandbox Code Playgroud)

代替.

但表格应该张贴到哪里?项目网址?/项目/ {项目-ID}

但是我想回到这个列表页面,在成功删除数据库中的行后显示成功消息.

当我使用成功消息刷新此列表页面时,我还想避免弹出消息.

如果我发回这个list.php网址,那么它不是RESTful是吗?因为下面的答案我告诉我每个项目都是需要自己网址的资源.

请赐教.谢谢.

php rest restful-url

5
推荐指数
1
解决办法
1192
查看次数

REST API 设计 - 使用请求正文删除多个项目

我有一个显示供应商产品的 API

我们的 UI 将允许用户选择各种过滤条件,并使用它一次删除大量产品。

问题是执行几千个单独的 HTTP 删除请求需要太长时间:

DELETE /api/supplier/6/products/5
DELETE /api/supplier/6/products/7
DELETE /api/supplier/6/products/8
DELETE /api/supplier/6/products/10
...
Run Code Online (Sandbox Code Playgroud)

目的是进行一次 HTTP 调用以一次删除一堆供应商产品。我可以将一个正文传递给删除,以便它包含我们要删除的所有 ID 的列表:

DELETE /api/supplier/6/products
Body:
{
  "DeleteIds": "[5,7,8,10]"
}
Run Code Online (Sandbox Code Playgroud)

这很有效,直到我们把它放在我们的生产代理防火墙后面,它从 DELETE 请求中剥离了主体。

我看过 HTTP Spec RFC 2616 Fielding 等。并且它没有明确说明我不应该在 DELETE 请求中使用正文,进一步阅读表明发送带有 DELETE 请求的正文没有任何问题。

我可以控制我们的代理服务器,并且能够允许所有请求都通过正文,但我担心这可能不是最佳做法。我们可能有数千个要通过的 Id,我不希望我们使用标头或 URL 参数,因为我们可能会遇到长度限制。

所以我的问题是:使用请求正文 对多个产品进行删除的正确方法什么?不仅仅是一个意见,而且是否有实际记录的证据来说明为什么我不应该使用 HTTP DELETE 的正文?

我应该继续

DELETE /api/supplier/6/products (Using a body)
Run Code Online (Sandbox Code Playgroud)

或者不应该将 DELETE 与正文一起使用,而是对类似的内容进行 POST

POST /api/supplier/6/products/deletemultiple
Run Code Online (Sandbox Code Playgroud)

编辑:在这个问题中有一些很好的辩论:删除一堆项目的宁静方式 它没有解决我关于使用 DELETE 请求的正文进行自定义删除操作的问题,但是有一些关于不同方式的很好的辩论可能会发生批量删除。

c# http http-delete asp.net-web-api asp.net-web-api2

5
推荐指数
1
解决办法
5069
查看次数