【问题标题】:Spring Boot RestController - PostMapping - Process Request Body as InputStream [duplicate]Spring Boot RestController - PostMapping - 将请求正文作为 InputStream [重复]
【发布时间】:2020-05-05 02:05:57
【问题描述】:

在 Spring Boot RestController 中使用 PostMapping 时,是否有一种简单的方法可以将 POST HTTP 请求的主体处理为 InputStream?

接受来自 Multipart HTTP POST 请求的文件上传作为 MultipartFile 实例非常简单,但我希望能够简单地将二进制内容发布到 HTTP 端点并将其作为 InputStream 处理。

Spring Boot 可以做到这一点吗?

例如使用以下 Postman POST:

【问题讨论】:

    标签: spring rest spring-boot post


    【解决方案1】:

    我知道两种可能的方法

    获取 HttpEntity

    @PostMapping
    public ResponseEntity<String> post(HttpEntity<byte[]> requestEntity) {
        return ResponseEntity.ok(new String(requestEntity.getBody()));
    }
    

    接受整个请求

    @PostMapping
    public ResponseEntity<String> post(HttpServletRequest request) {
        request.getInputStream();
    }
    

    【讨论】:

      【解决方案2】:

      如果您的方法中只有一个 InputStream 参数,那么您将获得请求正文。

      @RequestMapping(method = RequestMethod.PUT)
      public ResponseEntity<Void> put(InputStream is) {
          // Do something
          return ResponseEntity.ok();
      }
      

      这是 Spring Boot 2.4.1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-06
        • 2016-06-27
        • 2023-01-13
        • 2021-11-01
        • 1970-01-01
        • 2020-10-18
        • 2019-01-01
        • 1970-01-01
        相关资源
        最近更新 更多