Spring Boot RestController - PostMapping - 将请求正文作为 InputStream 处理

Att*_*ila 5 rest post spring spring-boot

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

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

这可以用 Spring Boot 吗?

例如使用以下 Postman POST:

在此处输入图片说明

Mat*_*ett 6

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

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

这是 Spring Boot 2.4.1 的情况。


Mat*_*ias 5

我知道两种可能的方法

取 HttpEntity

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

采取整个请求

@PostMapping
public ResponseEntity<String> post(HttpServletRequest request) {
    request.getInputStream();
}
Run Code Online (Sandbox Code Playgroud)