我们的客户API采用{customer-name,customer-mobile,customer-email}并在数据库中创建客户。
我们还有订单API,需要{productId,客户名称,客户 - 移动,客户 - 电子邮件}。
订单API的代码:
这种宁静的做法是一个API在内部首先创建一些其他资源吗?
请注意,这是一个简化的示例,其中API预计订单API中只有一种类型的产品。
答案 0 :(得分:1)
单个POST调用可以导致创建多个资源。这通常不是最好的想法,但有一些用例是有道理的 - 例子案例可能包括(通常的法律免责声明......不限于......)
POST方法是所有创建的资源的父资源。因此,POST /accounts
调用可能会导致创建/accounts/<accountId>
资源,但也会导致/accounts/<accountId>/tweets
资源。在这种情况下,/accounts/<accountId>
父项是正在创建的“实际”资源。
POST方法可能会创建多个资源,表示资源可能与系统其他部分交互的多种方式。因此,POST /accounts
响应可能会在/accounts/<accountId>
和/users/<accountId>
下创建资源(因为帐户是 - 用户和用户ID是一组超级帐户ID,为了论证缘故)。但是,客户端确实只会被告知“/ accounts”路径下的那个(通过Location标头)。另一个创建的资源基本上是副作用。
关键点,实际上,POST方法返回一个单位置标头 - 表示创建的“主要”资源 - 以及该URI上的后续'GET'能够定位任何其他资源通过链接。
如果您发现自己处于通过单个POST请求创建多个资源导致您必须为Location标头返回不同值的情况,那么您的资源崩溃就会出现问题。应该清楚的是,'POST'将始终创建一个特定类型的资源,即在标头中返回的URI。其他资源可能被创建为副作用。