命名api路由的最佳实践是什么?

时间:2018-05-02 16:32:17

标签: asp.net model-view-controller

我不知道定义Rest API约定的最佳方法是什么,到目前为止我所做的是

对于CRUD操作,我会让HttpVerb完成

等工作

GET / projects

POST / projects / {projectId}

PUT / projects / {projectId}

DELETE / projects / {projectId}

对于CRUD以外的操作

POST / projects / {projectId} / changeStatus

对于关系实体

GET / projects / {projectId} / workItems /

在你的情况下,你会做什么?

1 个答案:

答案 0 :(得分:2)

到目前为止,我认为你做得很好。当您可以确定资源时,它会容易得多。你需要问问自己资源是什么。

在您的情况下,资源是项目,这就是为什么需要将操作绑定到资源的原因(因为您可以看到projectId经常出现在uri中)。

以下是一些值得关注的例子

<强> 1。文档

文档资源是一种类似于对象实例或数据库记录的单一概念。在REST中,您可以将其视为资源集合中的单个资源。文档的状态表示通常包括具有值的字段和指向其他相关资源的链接。

使用“单数”名称表示文档资源原型。

http://api.example.com/device-management/managed-devices/{device-id}
http://api.example.com/user-management/users/{id}
http://api.example.com/user-management/users/admin

<强> 2。集合

集合资源是服务器管理的资源目录。客户可以建议将新资源添加到集合中。但是,要由集合选择是否创建新资源。集合资源选择它想要包含的内容,并决定每个包含资源的URI。

使用“复数”名称表示收集资源原型。

http://api.example.com/device-management/managed-devices
http://api.example.com/user-management/users
http://api.example.com/user-management/users/{id}/accounts
store

商店是客户端管理的资源库。商店资源允许API客户端放入资源,将其退出,并决定何时删除它们。商店永远不会生成新的URI。相反,每个存储的资源都有一个客户端在最初放入商店时选择的URI。

使用“复数”名称表示商店资源原型。

http://api.example.com/cart-management/users/{id}/carts
http://api.example.com/song-management/users/{id}/playlists

第3。控制器

控制器资源模拟程序概念。控制器资源就像可执行函数,带有参数和返回值;输入和输出。

使用“动词”表示控制器原型。

http://api.example.com/cart-management/users/{id}/cart/checkout
http://api.example.com/song-management/users/{id}/playlist/play