我目前正在将旧API移植到Spring Boot并遇到问题。在旧API中,可以对同一端点发出两种类型的cURL请求:一种用于发布JSON数据,另一种用于使用文件发布JSON数据。这两个请求看起来像这样:
仅限JSON:
curl -i -X POST 'http://localhost:8080/myEndpoint' \
-H 'Accept:application/json' \
-H 'someheader:value' \
-H 'Content-Type:application/json' \
-d '{ "jsondata":"goesHere" }'
JSON with image:
curl -i -X POST 'http://localhost:8080/myEndpoint' \
-H 'Accept: application/json' \
-H 'Content-Type: multipart/mixed' \
-H 'someheader:value' \
-F '{ "jsondata":"goesHere" }' \
-F "file=@filewanted.file"
可以看出,我可以向同一个端点发送请求主体或多部分/混合请求,并且根据收到的内容,服务器将执行一些业务逻辑。
我试图复制这种行为是春天无济于事。我能够轻松地复制仅JSON请求:
@RequestMapping(value = "/myEndpoint", method = RequestMethod.POST)
public ResponseEntity createActivityFile(@RequestHeader(value = "someheader") String someheader,
@RequestBody() String body,) {
// do something...
return new ResponseEntity(HttpStatus.OK);
}
当我将多部分文件添加到混合中时会出现问题。我试过了:
@RequestMapping(value = "/myEndpoint", method = RequestMethod.POST)
public ResponseEntity createActivityFile(@RequestHeader(value = "someheader") String someheader,
@RequestBody() String body,
@RequestPart(value = "file", required = false) MultipartFile file) {
// do something...
return new ResponseEntity(HttpStatus.OK);
}
但是有了这个,我总是遇到The request was rejected because no multipart boundary was found
错误。
这让我想问,我正试图用Spring Boot做些什么?如果是这样,我的RequestMapping
会是什么样的?
答案 0 :(得分:1)
您可以使用@Consumes
注释
consumes = MediaType.APPLICATION_JSON
其他端点具有不同的MediaType