我有一个带有一些配置属性的网络服务器,我希望能够使用REST API更改它们。
实施例
{
"maxUsers" : 10,
"refreshPeriodInMin" : 5
}
我想用"配置"来代表这个。宾语。根据REST原则,我认为最好的方法是:
GET/PUT/POST/DELETE /configurations/{id}
但在我的情况下,我只有一个配置对象,我不喜欢必须查询
的想法GET /configurations
只为一个对象。
因为只有一个对象,我找到的最简单的解决方案是使用id = default
会提供类似
的内容GET /configurations/default
/configuration
在REST世界中是否正确?我的另一个解决方案是每个属性有一个对象。这会给出
GET /properties/maxUsers
该解决方案的问题是您需要知道要查询它的属性名称。如果您要进行多项更改,则可以进行多次查询。
答案 0 :(得分:1)
如果它真正代表一个单一的东西,保持资源单数。如果你只有一个,当你想要创建或更新它时,没有理由不简单地PUT到该资源,并且当你想要检索它时从该资源获取。
如果无法删除,请在DELETE请求中返回405 METHOD NOT ALLOWED。如果可以删除,则可以接受对该资源的DELETE请求,之后GET请求可以返回404 NOT FOUND。
在很多方面,在/ configuration / default这样的路径中添加id元素可能会让用户感到困惑,因为他们可能希望除了默认配置之外他们能够将新配置发布到/ configuration。
关键是要为API的消费者做一些明智和直观的事情。