我正在创建一个REST API,客户端可以在其中查询某些ID的数据。查询示例如下:
/api/data?ids=1&ids=2&ids=3&start=2019-01-01&end=2019-02-12
这遵循用于传递数组的Open API规范:https://swagger.io/docs/specification/describing-parameters/#query-parameters
现在假设id 2和3存在并且分别返回1条记录和0条记录。还要假设id 1不存在。
应退还给客户什么?我倾向于返回带有字典的OK 200,其中id 3将作为键出现,但不包含任何数据,而id 1则根本不会出现。
类似这样的东西:
{
{
id=2,
records=[154334, 324343]
},
{
id=3,
records=[]
}
}
然后,客户端将不得不推断ID 1无效。当尝试发出查询以检索ID 1上的元数据时:
/api/entity/1
然后我将返回404 Not Found。
总的来说,我想找到一个很好的解决方案来处理查询提供部分匹配的REST API请求的响应和状态代码。
答案 0 :(得分:1)
由于还有其他具有有效数据的字段,因此发送200将是正确的响应。推断数据不存在将是客户(被呼叫者的责任)。
此处要注意:发件人的请求正确。而且您还具有发送的过滤器的数据。
通过服务器的POV
这是类型的函数
GetData(
(name="id")List<int> ids,
(name="start") DateTime startDate,
(name="end") DateTime endDate){
// your logic goes here
}