我们正试图弄清楚是否有一种普遍接受的提供API父母的方式 - >儿童资源。假设我们有一个Person实体,每个Person都有0个或更多地址实体所代表的地址。
就我们的基本API而言:
POST: /api/v1/person
GET: /api/v1/person/{id}
PUT: /api/v1/person/{id}
DELETE: /api/v1/person/{id}
然后我们有两种方法来检索一个人的地址:
/api/v1/person/{id}/addresses
/api/v1/addresses/{personId}
我们觉得为GET选择前一个选项/person/{id}/addresses
更自然,但同时如果我们想通过其ID检索地址,那么它应该是/api/v1/address/{id}
。
问题是,是否有处理POST,PUT和DELETE调用的约定?对我来说,有意义的是,这些应该被调用到/api/v1/address OR /api/v1/address/{id}
的地址服务,但同时我可以看到为什么有人会POST到`/ api / v1 / person / {id} / address'而不是传递请求正文中的人员身份。
所以,是的,你们可以在这里指出我们正确的方向 - 当涉及到父母时,API设计中是否有书面或不成文的规则 - >孩子的关系?
提前致谢!
答案 0 :(得分:3)
地址是否可以在没有人的情况下存在?如果答案是肯定的,那么地址应该是它自己的资源。
/api/v1/addresses
:所有地址的集合/api/v1/addresses/{addressId}
:单个地址/api/v1/addresses?person={personId}
:一个人的所有地址我没有使用/api/v1/addresses/{personId}
,因为personId
是一个人的ID,而不是收件人的ID,并不是很明显。
但与此同时,/api/v1/person/{id}/addresses
应该可以从一个人导航到他的所有地址。
如果没有人不能存在地址,请仅使用/api/v1/person/{id}/addresses
。