gpt4 book ai didi

rest - 设计具有多个 ID 的 RESTful 服务

转载 作者:行者123 更新时间:2023-12-02 05:06:10 27 4
gpt4 key购买 nike

我正在设计一个 RESTful 服务。就是列出一组数据。主要问题是该集合没有合理的单一标识符。在系统的知识范围内也不能轻易计算出具体的集合。因此,似乎无法获得 GET/items/{identifier} 服务。

我确实有被请求的每个元素的 ID。我的主要问题是在 URI 中列出 ID 似乎不是 RESTful(例如 GET items/{id1},{id2},...,{idn} )。对吧?

我可以看到 DELETE 有一个类似的用例 - 在一个请求周期中删除多个项目。

如何在 REST 领域内满足这样的用例?这可能吗?

最佳答案

问题中所述的方法实际上意味着对于 ids 的每个组合都有一个资源。假设我们有 2 个 ids:1 和 2。

/items/1,2

/items/2,1

上面代表不同的资源,虽然结果是一样的。这可能会让 API 的使用者感到困惑。

另一种对此建模的方法是通过查询参数作为过滤语义。假设 id 实际上是资源的一个字段。

示例,通过id 1获取item:

GET
/items/1

Response:

{
"id": 1,
"type": "table",
"color": "black",
...
}

那么问题来了,如果我需要批量获取几件商品怎么办?您可以将此问题概括为按某些字段的值过滤 items 的一般问题。例如:获取 table

类型的所有 items
GET
/items?query="name='table'"

Response:
{
"data": [
{
"id": 1,
"type": "table",
"color": "black",
...
},
{
"id": 2,
"type": "table",
"color": "grey",
...
},
{
"id": 6,
"type": "table",
"color": "brown",
...
}
]
}

所以对于获取 id12items 可以提出同样的问题。假设我们在 query

的语法中将 or 操作建模为 ||
GET
/items?query="id=1||id=2"

Response:
{
"data": [
{
"id": 1,
"type": "table",
"color": "black",
...
},
{
"id": 2,
"type": "table",
"color": "grey",
...
}
]
}

关于rest - 设计具有多个 ID 的 RESTful 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11303874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com