Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb RESTful API命名约定_Mongodb_Api_Nosql_Restful Architecture - Fatal编程技术网

Mongodb RESTful API命名约定

Mongodb RESTful API命名约定,mongodb,api,nosql,restful-architecture,Mongodb,Api,Nosql,Restful Architecture,我有两个收藏:个人和宠物。一个人可以养任意数量的宠物 个人文件: person { id: person-id data: person-info } pet { id: pet-id data: pet-info personId: person-id } 宠物文件: person { id: person-id data: person-info } pet { id: pet-id data: pet-info personId: person

我有两个收藏:个人宠物。一个人可以养任意数量的宠物

个人文件:

person {
  id: person-id
  data: person-info
}
pet {
  id: pet-id
  data: pet-info
  personId: person-id
}
宠物文件:

person {
  id: person-id
  data: person-info
}
pet {
  id: pet-id
  data: pet-info
  personId: person-id
}
这是我的API命名设计

  • 从一个人那里获得所有宠物:/api/pets/:personId
  • 获取所有宠物的条件:/api/pets/:personId?年龄大于等于4
  • POST create new pet:/api/pets,带有包含个人id的请求正文
  • 将更新宠物信息:/api/pets/:petId与包含个人id和更新信息的请求正文放在一起
  • 删除包含宠物ID的请求正文的宠物:/api/pets/:personId

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

可以在此处找到命名约定:

请再次检查HTTP方法和REST。 基本概念是URL表示资源,应用于这些URL的HTTP方法指示您希望对这些资源执行的操作

获取-读取资源 放置/后创建资源 修补程序-更新资源 DELTE-删除资源

所以,如果您只更改资源的一部分属性,那么您可以使用PATCH而不是PUT来更新资源

同样在删除示例中,您应该使用宠物id作为路径变量,而不是个人id

对于获取一个人的所有宠物,我认为/api/person/id/pets比/api/pets/personid更简单,因为当您看到URL/api/pets/23时,您不知道它是宠物23还是id为23的人的所有宠物


再考虑一下最佳实践(只需使用您选择的搜索引擎即可)

可以在此处找到命名约定:

请再次检查HTTP方法和REST。 基本概念是URL表示资源,应用于这些URL的HTTP方法指示您希望对这些资源执行的操作

获取-读取资源 放置/后创建资源 修补程序-更新资源 DELTE-删除资源

所以,如果您只更改资源的一部分属性,那么您可以使用PATCH而不是PUT来更新资源

同样在删除示例中,您应该使用宠物id作为路径变量,而不是个人id

对于获取一个人的所有宠物,我认为/api/person/id/pets比/api/pets/personid更简单,因为当您看到URL/api/pets/23时,您不知道它是宠物23还是id为23的人的所有宠物


再考虑一下最佳实践(只需使用您选择的搜索引擎即可)

你的意思是像
api/people/:personId/pets
旁边的
api/pets/…
东西吗?是的,我说得更有道理。这是这种情况下的最佳实践吗?你的意思是像
api/people/:personId/pets
旁边的
api/pets/…
一样吗?是的,我说得更有意义。这是这种情况下的最佳做法吗?谢谢,@Dennis,这很有帮助!“这个链接”帮了我很多忙谢谢你@DennisThanks,@Dennis,它非常有用!这个链接“”帮了我很多忙谢谢你@Dennis