RESTful API命名约定

时间:2018-06-27 18:49:04

标签: mongodb api nosql restful-architecture

我有两个收藏集:宠物。一个人可能拥有想要的宠物。

人员文档:

person {
  id: person-id
  data: person-info
}

宠物文档:

pet {
  id: pet-id
  data: pet-info
  personId: person-id
}

这是我的API命名设计

  • 从一个人那里获取所有宠物: / api / pets /:personId
  • 获取所有具有以下条件的宠物: / api / pets /:personId?age_greater_than = 4
  • POST创建新宠物: / api / pets ,其中请求正文包含person-id
  • 使用请求正文包含人员ID和已更新信息的PUT更新宠物信息: / api / pets /:petId
  • 删除删除宠物: / api / pets /:personId ,其中请求正文包含宠物ID

我的API命名约定是否有问题,如何改善?我认为直接将person-id传递给 / api / pets 有点奇怪。

1 个答案:

答案 0 :(得分:1)

可以在这里找到命名约定:https://restfulapi.net/resource-naming/

也请再次检查HTTP方法和REST。 基本概念是URL代表资源,而您应用于这些URL的HTTP方法表明您要使用这些资源。

GET-读取资源 PUT / POST-创建资源 PATCH-更新资源 DELTE-删除资源

因此,如果仅更改资源属性的一部分,也许可以使用PATCH而不是PUT来更新资源。

此外,在DELETE示例中,您应该将pet id用作路径变量,而不是person id。

要获取一个人的所有宠物,我认为/ api / person / id / pets可能比/ api / pets / personid更直接,因为当您看到URL / api / pets / 23时,您不知道是宠物23还是ID为23的人的所有宠物。

再次考虑最佳做法(只需使用您选择的搜索引擎);