RESTAPI中的首选资源设计?

RESTAPI中的首选资源设计?,rest,Rest,假设我有一个客户可以“提交”的域(这是域中的一个用例)。是否最好在资源中明确包含参与者(客户),如下所示: POST /customers/{id}/commit POST /commitments 或者,对新提交的创建进行如下建模会更好: POST /customers/{id}/commit POST /commitments 这有关系吗?如果有,为什么?这取决于客户和承诺之间的关系。Rest-ful URI应该公开资源。如果承诺仅在客户上下文(或是客户的一部分)中才有意义,那么像这

假设我有一个客户可以“提交”的域(这是域中的一个用例)。是否最好在资源中明确包含参与者(客户),如下所示:

POST /customers/{id}/commit
POST /commitments
或者,对新提交的创建进行如下建模会更好:

POST /customers/{id}/commit
POST /commitments

这有关系吗?如果有,为什么?

这取决于
客户
承诺
之间的关系。Rest-ful URI应该公开资源。如果承诺仅在客户上下文(或是客户的一部分)中才有意义,那么像这样的URI是合理的(它与您的URI相同,客户是主要资源,但请注意,它不是使用动词,而是使用名词,这是更可取的):

但是,如果资源在逻辑上依赖于另一个资源(不同于客户),或者也可以在客户上下文之外使用(例如,一盒承诺),或者可以自己使用,那么围绕所述资源设计URI将更有意义,例如:

POST /commitmentbox/commitments 
或者只是

POST /commitments
我建议您在本文中创建参考资料部分。它讨论了REST-ful URI设计中的多种最佳实践。另请参见讨论更复杂场景的地方(
客户
制作具有
行项目的
订单
)。两个帖子都很好

祝你好运