用于唯一资源的REST网址(带有单数的网址?)

时间:2016-04-29 17:05:22

标签: rest url

我有一个带有一些配置属性的网络服务器,我希望能够使用REST API更改它们。

实施例

{
    "maxUsers" : 10,
    "refreshPeriodInMin" : 5
}

我想用"配置"来代表这个。宾语。根据REST原则,我认为最好的方法是:

GET/PUT/POST/DELETE /configurations/{id}

但在我的情况下,我只有一个配置对象,我不喜欢必须查询

的想法
GET /configurations

只为一个对象。

因为只有一个对象,我找到的最简单的解决方案是使用id = default

会提供类似

的内容
GET /configurations/default
  • 是否有更好的方式来代表"独特的"资源?正如djmorton在评论中提到的那样/configuration在REST世界中是否正确?

我的另一个解决方案是每个属性有一个对象。这会给出

GET /properties/maxUsers

该解决方案的问题是您需要知道要查询它的属性名称。如果您要进行多项更改,则可以进行多次查询。

1 个答案:

答案 0 :(得分:1)

如果它真正代表一个单一的东西,保持资源单数。如果你只有一个,当你想要创建或更新它时,没有理由不简单地PUT到该资源,并且当你想要检索它时从该资源获取。

如果无法删除,请在DELETE请求中返回405 METHOD NOT ALLOWED。如果可以删除,则可以接受对该资源的DELETE请求,之后GET请求可以返回404 NOT FOUND。

在很多方面,在/ configuration / default这样的路径中添加id元素可能会让用户感到困惑,因为他们可能希望除了默认配置之外他们能够将新配置发布到/ configuration。

关键是要为API的消费者做一些明智和直观的事情。