gpt4 book ai didi

Spring Rest Controller先发送201再做服务操作

转载 作者:行者123 更新时间:2023-12-02 03:22:17 24 4
gpt4 key购买 nike

  1. 客户端发送一个 post 请求来收集 id 以询问操作状态
  2. Spring Rest Controller类处理post请求并发送201用 id 创建
  3. Spring Rest Controller 类调用服务类开始操作用那个ID问题:我无法在开始操作之前返回 id。因此客户端在返回 id 之前通过 websocket 接收到一些信息

    @RequestMapping(value = "/operations", method = RequestMethod.POST)
    public ResponseEntity<?> createNewSubscription{
    String id =1;
    return new ResponseEntity<>(id, HttpStatus.CREATED);
    service.doOperations(id)
    }

    我可以通过创建一个线程来解决这个问题,该线程调用我的服务类并在线程中等待 100 毫秒,当线程运行时将创建的 201 发送到客户端。但这不是一个好的解决方案。也许我可以使用 Spring Async rest request 但它也在等待回调方法..如何解决这个问题?

最佳答案

您可以将响应对象注入(inject)到 Controller 方法中,设置状态并刷新它。

public void createNewSubscription(HttpServletResponse resp) throws IOException {
resp.setStatus(HttpServletResponse.SC_CREATED);
resp.flush();
// ...
}

Flush 已经将响应代码和 header 发送到客户端。您可以在 Controller 线程中或异步地进行计算,例如。使用 Spring 异步。

NB - 使用 Spring Async,你用 @Async 注释的方法可以返回 void,这意味着它是“即发即忘” - 你不必等待它完成。

关于Spring Rest Controller先发送201再做服务操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32497375/

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