我在一种类型的对象后面得到了简单的Restful设计:
GET /users
GET /users/123
POST /users/new
POST /users/1/edit (or PUT)
POST /users/1/delete (or DELETE)
...
关注从一种对象到另一种对象的关系:
GET /user/123/company
GET /user/123/roles
POST /user/123/roles/new
…
复合DTO混合多个物体怎么样?例如:
//Listing all users with their companies and primary role
GET /usersWithCompaniesAndPrimaryRoles
//List all companies with users and roles count in each company
GET /companiesWithUsersAndRolesCount
在这种情况下,我的API链接看起来不太干净或者不再适合我了?我想知道如何以一种宁静的方式构建这些复合DTO的CRUD?请告诉我,或将我链接到我可以学习如何做到的地方?
非常感谢。
答案 0 :(得分:1)
Restful设计应该有这样的API路径。
相反,您应该使用GET /users
URI,并提供查询参数。例如:
GET /users?with_companies=yes
在Restful中,您不应将URI视为API命令。尝试将URI视为实体,然后尝试获取,插入,更改和删除。 其他“命令”没有空间。
这就是为什么,例如,
不应该有POST /users/new
API路径。
相反,只需发布到/users
。
另一种可能的RESTfull方法是使用POST创建“查询资源”对象,返回“查询资源ID号”,稍后将在分离的GET请求中使用。 通过这种方式,您可以创建已保存的查询,这些查询也可以有效地进行重新查询。