【问题标题】: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。