2014-02-18 70 views
1

关于RESTful接口命名约定存在大量的问题,围绕单数与复数资源名称。有点约定是:REST API:如何命名派生资源?

GET /users Retrieve collection of users 
GET /users/{id} Retrieve user 
POST /users Create user 
PUT /users/{id} Update user 
DELETE /users/{id} Delete user 

但是,上述不起作用时,资源是从环境中派生的值。

我假设的应用有以下端点:

GET /source Get information about the source of the query. 

与回应:

  • 引荐URL
  • 远程IP

由于source从环境中得来,不会有不止一个来源,因此c分配资源sources或提供sources/{foo}查找是不实际的。

REST风格建议如何处理这些实体的命名?

回答

0

Fielding博士注意到,在他的著名dissertation 6.2.1节:

..authors需要,他们 由超媒体引用打算语义紧密匹配的标识符,让参保持 静即使访问该引用的结果可能随时间而改变 。

因此,使用普通source端点是有意义的。

如果您想提供更多通用的IP地址服务,如this one,那将是另一回事。

+1

进一步思考这个问题,我打算在资源名称中添加后缀“me”,例如https://gist.github.com/gajus/f57136b33ae65ae555f2如果“客户”端点允许有关其他客户的信息,则允许将来的验证设计。 – Gajus

+0

如果这是您的目标,我建议保留该API点的复数名称,并通过/ cusotmers /:id直接提供任何客户的简单访问权限,但肯定会在某些时候需要。 – mSolujic

+0

自从发布这个决定以来,这个决定已经改变了很多次......当我完成这个任务时,我会写一篇博文。 – Gajus