Spring Boot RestController - PostMapping - 将请求正文作为 InputStream [重复]
Posted
技术标签:
【中文标题】Spring Boot RestController - PostMapping - 将请求正文作为 InputStream [重复]【英文标题】:Spring Boot RestController - PostMapping - Process Request Body as InputStream [duplicate] 【发布时间】:2020-05-05 02:05:57 【问题描述】:在 Spring Boot RestController 中使用 PostMapping 时,是否有一种简单的方法可以将 POST HTTP 请求的主体处理为 InputStream?
接受来自 Multipart HTTP POST 请求的文件上传作为 MultipartFile 实例非常简单,但我希望能够简单地将二进制内容发布到 HTTP 端点并将其作为 InputStream 处理。
Spring Boot 可以做到这一点吗?
例如使用以下 Postman 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。
【讨论】:
以上是关于Spring Boot RestController - PostMapping - 将请求正文作为 InputStream [重复]的主要内容,如果未能解决你的问题,请参考以下文章
spring Restcontroller 或 RepositoryRestResource 用啥
Spring:RestController 和 Controller 的不同异常处理程序
为啥 Spring Boot 应用程序 pom 同时需要 spring-boot-starter-parent 和 spring-boot-starter-web?