设计一个RESTful api,用于立即创建资源及其相关资源
我想知道如何设计一个RESTFUL api来同时创建资源及其相关资源 例如,我想使用RESTFUL API创建一个包含项目列表的订单,例如:设计一个RESTful api,用于立即创建资源及其相关资源,rest,api,post,one-to-many,orders,Rest,Api,Post,One To Many,Orders,我想知道如何设计一个RESTFUL api来同时创建资源及其相关资源 例如,我想使用RESTFUL API创建一个包含项目列表的订单,例如: { order_id:1, description: "XXX", items: [ {item_id:1, price:30, ...}, {item_id:2, price:40, ...} ] } 一种方法是提供两个api post:api/orders=>创建新订单并返回订单id p
{
order_id:1,
description: "XXX",
items: [
{item_id:1, price:30, ...},
{item_id:2, price:40, ...}
]
}
一种方法是提供两个api
api/orders
=>创建新订单并返回订单idapi/orders/id/items
=>使用订单id创建相关项目api/orders
发布一次,这是一种好方法吗?还是有其他更好的设计来应对这种情况
谢谢大家! 当然,创建没有物品的订单是个坏主意。这将导致不可靠的API和不一致的实体。此外,您不能使用
api/orders
URI创建项,因为这违反了REST原则的基础
对于您的业务逻辑,REST API可能如下所示:
POST api/item
{
price: 40,
name: "xxx",
...
}
<<<<< 201
{
id: 1
}
GET api/item/{id}
<<<<< 200
{
id: 4,
price: 40,
name: "xxx",
...
}
POST api/order
{
description: "xxx",
items: [
{id: 1, count: 5},
{id: 23456, count: 1}
]
}
<<<<< 201
{
id: 123442
}
POST-api/item
{
价格:40,
名称:“xxx”,
...
}
我想知道如何设计一个RESTFUL api来同时创建资源及其相关资源
做一件完全合理的事。将注意力集中在如何向客户描述如何创建适当的请求,以及如何解释描述结果的文档上
线索在201创建状态代码的定义中
201(已创建)状态代码表示请求已完成,并导致创建一个或多个新资源。
201响应有效载荷通常描述和链接到所创建的资源
(增加重点)
在网络的情况下,我们会这样做的方式是有一个表单;客户将在表格中提供信息并提交。遵循表单处理标准的浏览器将生成一个POST(因为语义不安全)请求,其中表单数据编码在消息体中,相应的内容类型定义在消息头中(例如application/x-www-form-urlencoded
)
用术语来说,响应将是一个HTML文档,其中包含一组指向所创建的所有感兴趣资源的链接
它必须是HTML吗?不,当然不是-如果适合您的需要,您可以使用text/plain
。当使用内置了通用组件可以理解的链接概念的媒体类型时,您的长期前景会更好。您不能使用api/orders URI创建项目,因为这违反了REST原则的基础。您能解释一下吗?