半正常响应的正确状态代码是什么?

问题描述 投票:0回答:1

我有一个客户端向服务器请求 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-status-codes chatgpt-function-call
1个回答
0
投票

对于部分数据,我根据情况使用两种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

© www.soinside.com 2019 - 2024. All rights reserved.