gpt4 book ai didi

Spring REST @RequestMapping 采用多种媒体类型

转载 作者:行者123 更新时间:2023-12-02 00:57:30 25 4
gpt4 key购买 nike

我正在使用 Spring 开发一个 REST API,并且想要一个 API 来处理具有不同媒体类型的 POST 请求,即请求正文中的 JSON 表单数据,或通过请求发送的 JSON 文件。

因此,当我有两个带有此类签名的独立方法时,它们都可以正常工作,

@RequestMapping(value = "/configuration" , method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public String setConfiguration(@RequestPart MultipartFile file)
@RequestMapping(value = "/configuration" , method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}
public String setConfiguration(@RequestBody Configuration configuration)

两种方法的处理逻辑几乎相同,所以我尝试用一​​种方法吸收两种数据格式,代码如下:

@RequestMapping(value = "/configuration" , method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
public String setConfiguration(@RequestPart MultipartFile file, @RequestBody Configuration configuration)

然而,错误响应将返回为,

{"timestamp": 1443744180124,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.web.multipart.MultipartException",
"message": "The current request is not a multipart request",
"path": "/v1/testconfiguration"
}

想知道我是否对 REST 的媒体类型有一些基本的误解,如果这是可行的,我该如何用 Spring 实现它?

最佳答案

如果它们都作为单独的方法工作,那么您最好只这样做。

它可能更简洁、更易于阅读,没有必要像您现在所做的那样尝试进行优化,并不是说我不花时间编写自己的代码。

关于Spring REST @RequestMapping 采用多种媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32898742/

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