问题中所述的方法实际上意味着对于每个组合ids
都有一个资源。假设我们有 2 ids
: 1 和 2。
/items/1,2
/items/2,1
以上代表不同的资源,虽然结果是一样的。这可能会让 API 的使用者感到困惑。
另一种对此建模的方法是通过查询参数作为过滤语义。让我们假设,id
实际上是资源的一个字段。
例如,item
以id
1 为单位:
GET
/items/1
Response:
{
"id": 1,
"type": "table",
"color": "black",
...
}
所以问题是,如果我需要批量购买几件商品怎么办?您可以将此问题概括为items
按某些字段的值进行过滤的一般问题。例如:获取所有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",
...
}
]
}
因此,可以询问相同的问题来获取items
where id
is1
或2
。假设我们将or操作建模||
为query
GET
/items?query="id=1||id=2"
Response:
{
"data": [
{
"id": 1,
"type": "table",
"color": "black",
...
},
{
"id": 2,
"type": "table",
"color": "grey",
...
}
]
}