json - 更新子资源时的标准 REST Api 约定
问题描述
我有一种情况:类别 - 不同类型的主数据。订单 - 引用了类别。它是从 Order 到 Category 的一对一映射。Order 表有一个外键列到 Category。现在 api 来获取订单
/users/orders
将返回类型为
{ "name: "abc", "categoryId" : 23 }
会很好,或者我们应该将json返回为
{ "name: "abc", "category" : "CAT-A" }
我们还有一个客户知道类别的创建/更新订单用例。我们需要一个 api 来发布带有类别的新订单。应该是这样的吗?
1. post /api/orders { "categoryId" : 23, ....}
还是这样的?
2. post /api/orders/category/23/order
解决方案
首先,使用标识符(或链接!):
{ "name: "abc", "categoryId" : 23 }
或者
{ "name: "abc", "category" : "/api/categories/23" }
不是名称(因为这些名称可能会不时更改)
{ "name: "abc", "category" : "CAT-A" }
对于发布订单,我建议使用
post /api/orders { "categoryId" : 23, ....}
只是因为您要在订单资源上添加订单。订单应该已经有一个引用(或链接!)的类别。
这种方法
post /api/orders/category/23/order
也可以。但是客户端需要使用已经包含在请求正文中的信息来构建一个 url,所以事情只会变得更复杂一些(如果 url 和请求正文中的类别不一样怎么办?如果请求中的类别怎么办? body 不见了?在这种情况下请求仍然有效吗?)
推荐阅读
- intellij-idea - Grails 设置同步失败。未能创建 /Users/
/.grails/scripts/IdeaPrintProjectSettings.groovy - ansible - Ansible set_fact 类型转换
- node.js - TypeError:that.getDestination 不是函数
- analytics - MixPanel - 为已注册的用户创建用户配置文件
- windows - 在 Windows 10 上卸载 mongoDb 时出现此错误:缺少“mongodb-windows-x86_64-4.4.1-signed.msi”文件
- sql - 如何使用具有外键作为列之一的存储过程将值插入表
- javascript - 当我在 asp.net mvc 中使用 javascript 单击按钮时,我无法将产品添加到购物车
- python - 使用 crontab 自动执行位于 Digital Ocean 液滴上的 python 脚本?
- flutter - 如果列表颤动中的参数为真,如何返回类字段
- javascript - 我的 jQuery 代码应该放在 Javascript 文件中的什么位置?