gpt4 book ai didi

java - Spring Boot 同一端点的多种请求类型

转载 作者:行者123 更新时间:2023-12-01 09:40:49 24 4
gpt4 key购买 nike

我目前正在将旧 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:

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"

可以看出,我可以向同一端点发送请求正文或多部分/混合请求,并且根据接收到的内容,服务器将执行一些业务逻辑。

我尝试在 spring 中复制这种行为,但收效甚微。我能够轻松复制仅 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);
}

但是这样,我总是收到请求被拒绝,因为没有找到多部分边界错误。

这让我想问,我尝试使用 Spring Boot 可以实现什么吗?如果是这样,我的 RequestMapping 会是什么样子?

最佳答案

您可以使用@Consumes注释来做到这一点

消耗= MediaType.APPLICATION_JSON

以及具有不同MediaType的其他端点

关于java - Spring Boot 同一端点的多种请求类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38468166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com