我有一个客户端向服务器请求 n 个元素。服务器向 ChatGPT 请求 n 个元素,但有时 ChatGPT 返回 n-1 或 n+1 个元素。
客户端代码
const count = 3;
var elements = Server.GetElements(count);
for(int i = 0; i < elements.Count; i++)
{
DoStuff(elements[i]); // Index out of bounds
}
服务器代码
var count = ClientRequest.GetCount(); // Client requests 3 elements
List elements = ChatGPT.GetElements(count); // Server returns 4 elements
return elements;
这将会发生。理想情况下,我将修复服务器,以便它始终返回正确数量的元素。但 ChatGPT 有时是不可预测的,我无法投入所有时间来解决这些边缘情况。
当服务器返回的元素数量不正确时,HTTP 状态代码应该是什么?它仍然应该返回 200 还是其他什么?
我的正常响应包含一个数据字段和一个带有状态代码的元字段。如果发生这种情况,是否应该有一个额外的错误字段?或者该信息属于元字段吗?
注意:我不是在询问分页。
对于部分数据,我根据情况使用两种HTTP状态代码:
200 OK
或206 Partial Content
。
200 OK
:当服务器成功处理请求时,即使数据不完整,也可以使用200
。您可以考虑响应中的元数据来表明内容是部分的:
{
"elements": [/* partial list */],
"isPartial": true,
"message": "This is a incomplete list."
}
206 Partial Content
:这用于指示部分响应。可与分页数据、字节流等一起使用。例如:
HTTP/1.1 206 Partial Content
Content-Range: items 0-49/100
{
"elements": [/* partial list */],
"total": 100,
"returned": 50,
"message": "Partial response."
}
200 OK
。您可以在响应正文或标头中表达偏爱。206 Partial Content
。看个人选择使用
200
还是206
。