2

我有一个场景,我必须要么

  • 从后端提取数据作为搜索
  • 从后端拉取相同的数据进行管理

我使用的网址是 -

  • /汽车
  • /汽车/管理

然后可以随后将搜索过滤为

  • /汽车?颜色=蓝色

我担心的是管理不是一种资源——它实际上是一种行动。管理页面包含与汽车管理相关的其他功能的链接[添加汽车/删除汽车/列出汽车/修改汽车等]

有其他人遇到过这个问题吗?你能告诉我你的解决方案吗?

4

3 回答 3

1

拥有一个显示汽车管理选项的页面的管理资源并没有错。仅仅因为“汽车”是数据库中唯一的东西并不意味着它是您可以呈现给用户的唯一资源。您可以有一个资源,它只是一个选择颜色的表单(对汽车资源进行 POST 或 PUT)。您可能有一个资源,它只是一个表格来填写您希望将汽车交付到的地址。无论您是否想要真皮座椅,您都可以拥有一个只是复选框的资源。您可以拥有任意数量的资源,这是有意义的,即使所有资源都是带有表单或返回汽车资源的链接的页面。

只是不要在您的 URL 中添加任何动词。您仍然应该使用 HTTP 动词的状态传输来更改资源的状态。没有类似的链接

获取 /cars/123/deleteCar

在管理页面。相反,管理页面上可能有一个链接(可能使用 Javascript,因为浏览器对 HTTP 动词的原生支持很差)执行 HTTP 请求,如下所示

DELETE /cars/123

当用户点击链接时。像 jQuery 这样的东西可以帮助解决这个问题。只要管理页面使用 HTTP 动词来更改您遵循 REST 的资源的状态,因为 HTTP 是一个 REST 约束协议。REST 并没有说没有动作,它说动作应该被限制为状态转移。

于 2013-11-12T10:05:59.513 回答
0
  1. 没有“RESTful URL”这样的概念;
  2. 您的网址没有问题(/cars、/cars/management)
  3. “/cars/management”是有效的资源,它根本不是一个动作。
于 2013-11-12T07:34:14.627 回答
0

执行此操作的 RESTfull 方法是使用具有不同 HTTP 动词的相同 URL:

  • GET /cars用于搜索/列表。
  • POST /cars用于插入。
  • PUT /cars?id=123(或/cars/123)进行更新。
  • DELETE /cars?id=123用于删除。
于 2013-11-12T07:58:35.670 回答