gpt4 book ai didi

java - RESTful API - 批量操作的分块响应

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:10 25 4
gpt4 key购买 nike

我正在研究一个类似于 REST 的 API,它将支持对某些资源进行批量操作。由于完成这样的请求可能需要一些时间,因此我想在分块响应中返回操作状态。媒体类型应该是 JSON。如何使用 JAX-RS 做到这一点?

(我知道有StreamingOutput,但是需要手动序列化数据。)

最佳答案

Chunked Transfer 编码通常用于发送方开始传输数据时内容长度未知的情况。接收方可以在服务器仍在生成新 block 时处理每个 block 。这意味着服务器一直在发送。据我所知,分块发送 I'm still working|I'm still working|I'm still working| 意义不大由大多数应用程序服务器透明地处理。当响应大于特定大小时,它们会自动切换。

您的用例的常见模式如下所示:

客户端触发批量操作:

POST /batch-jobs HTTP/1.1

服务器创建一个描述作业状态的资源,并在 Location header 中返回 URI:

HTTP/1.1 202 Accepted
Location: /batch-jobs/stats/4711

客户端检查此资源并收到 200:

GET /batch-jobs/stats/4711 HTTP/1.1

此示例使用 JSON,但您也可以返回纯文本或添加缓存 header ,告诉客户端他应该等待下一次轮询多长时间。

HTTP/1.1 200 OK
Content-Type: application/json

{ "status" : "running", "nextAttempt" : "3000ms" }

如果工作完成,服务器应该用 303 和他创建的资源的 URI 进行应答:

HTTP/1.1 303 See other
Location: /batch-jobs/4711

关于java - RESTful API - 批量操作的分块响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com