有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我使用的是一个类似REST的API,它将支持一些资源上的批量操作。由于完成这样一个请求可能需要一些时间,所以我想在一个分块响应中返回操作的状态。媒体类型应为JSON。如何使用JAX-RS实现这一点

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


共 (1) 个答案

  1. # 1 楼答案

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

    用例的通用模式如下所示:

    客户端触发批量操作:

    POST /batch-jobs HTTP/1.1
    

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

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

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

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

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

    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