更新子资源时的标准REST-Api约定



我有一种情况:类别-不同类型的主数据。订单-具有对类别的引用。它是从Order到Category的一对一映射。订单表有一个指向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和请求正文中的类别不一样怎么办?如果请求正文中缺少类别怎么办?在这种情况下请求仍然有效吗?(

最新更新