RESTful API 命名规则
RESTful API naming convention
我有两个collections:人和宠物。一个人想养多少只就养多少只。
个人文件:
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
- PUT 更新宠物信息:/api/pets/:petId 请求正文包含 person-id 和更新信息
- DELETE 删除宠物:/api/pets/:personId 请求正文包含 pet-ids
我的 API 命名约定有问题吗?如何改进?我认为将 person-id 直接传递给 /api/pets 有点奇怪。
可在此处找到命名约定:https://restfulapi.net/resource-naming/
另请再次检查 HTTP 方法和 REST。
基本概念是 URLs 代表资源,您应用于这些 URLs 的 HTTP 方法表明您要对这些资源执行的操作。
GET - 阅读资源
PUT/POST - 创建资源
PATCH - 更新资源
DELTE - 删除资源
因此,如果您只更改资源的一部分属性,也许您可以使用 PATCH 而不是 PUT 来更新资源。
另外,在 DELETE 示例中,您应该使用宠物 ID 作为路径变量,而不是人员 ID。
为了获得一个人的所有宠物,我认为 /api/person/id/pets 可能比 /api/pets/personid 更直接,因为当您看到 URL /api/pets/23 时您不知道如果它是宠物 23 或 id 为 23 的人的所有宠物。
再次考虑最佳做法(只需使用您选择的搜索引擎);)
我有两个collections:人和宠物。一个人想养多少只就养多少只。
个人文件:
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
- PUT 更新宠物信息:/api/pets/:petId 请求正文包含 person-id 和更新信息
- DELETE 删除宠物:/api/pets/:personId 请求正文包含 pet-ids
我的 API 命名约定有问题吗?如何改进?我认为将 person-id 直接传递给 /api/pets 有点奇怪。
可在此处找到命名约定:https://restfulapi.net/resource-naming/
另请再次检查 HTTP 方法和 REST。 基本概念是 URLs 代表资源,您应用于这些 URLs 的 HTTP 方法表明您要对这些资源执行的操作。
GET - 阅读资源 PUT/POST - 创建资源 PATCH - 更新资源 DELTE - 删除资源
因此,如果您只更改资源的一部分属性,也许您可以使用 PATCH 而不是 PUT 来更新资源。
另外,在 DELETE 示例中,您应该使用宠物 ID 作为路径变量,而不是人员 ID。
为了获得一个人的所有宠物,我认为 /api/person/id/pets 可能比 /api/pets/personid 更直接,因为当您看到 URL /api/pets/23 时您不知道如果它是宠物 23 或 id 为 23 的人的所有宠物。
再次考虑最佳做法(只需使用您选择的搜索引擎);)