我必须构建一个这样的 API:
/products/[code]/{quantity}/{price}
所以:
/products/87654/15/150.6
但是如果消费者没有传递数量怎么办?我无法判断以下代表的是价格:
/products/87654/150.6 (what's 150.6?)
那么这样的事情好吗?
/products/87654//150.6 (note the //)
或者还有其他约定吗?通常如何面对这样的问题?现在,我设法做了类似的事情:
\/products\/(?P<code>\d*)\/(?P<qty>\d+|null)\/(?P<price>\d*\.?\d+$)
它接受这样的事情:
/products/87654/null/150.6 (note the null)
但我不知道这是否是一个好的做法,而且我找不到有用的文档/图。
是的,我也可以使用好的查询变量
?qty=12&price=150.6
...但我想知道如何使用斜杠格式来做到这一点。
您想要针对您的产品发出 PUT/PATCH 请求,并在正文中包含要更新的数据,例如:
PUT /products/87654
Content-Type: application/json
{
"quantity" : 666,
"price" : 99
}
在您的服务器中,根据您使用的技术,您将相应地更新产品#87654。
这是节点/express 中的示例,只是一个草图:
app.put('/products/:id', async (request, response) => {
const updatedProduct = await Product.findOneAndUpdate(
request.params.id,
request.body
);
response.status(200).json(updatedProduct);
});
由您来处理进一步的验证约束。