我不知道定义Rest API约定的最佳方法是什么,到目前为止我所做的是
对于CRUD操作,我会让HttpVerb完成
等工作GET / projects
POST / projects / {projectId}
PUT / projects / {projectId}
DELETE / projects / {projectId}
对于CRUD以外的操作
POST / projects / {projectId} / changeStatus
对于关系实体
GET / projects / {projectId} / workItems /
在你的情况下,你会做什么?
答案 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