首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用相同方法spring boot Rest支持multipart/form-data和application/json

使用相同方法spring boot Rest支持multipart/form-data和application/json的方法有以下几种:

  1. 使用@RequestParam注解:在Controller的方法参数中使用@RequestParam注解来指定请求参数的名称。当请求的Content-Type为multipart/form-data时,使用@RequestParam可以获取multipart/form-data中的参数。当请求的Content-Type为application/json时,使用@RequestParam可以获取application/json中的参数。
代码语言:txt
复制
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("data") String data) {
    // 上传文件逻辑
    // 解析json数据逻辑
    return "success";
}
  1. 使用@RequestPart注解:在Controller的方法参数中使用@RequestPart注解来指定请求参数的名称。当请求的Content-Type为multipart/form-data时,使用@RequestPart可以获取multipart/form-data中的参数。当请求的Content-Type为application/json时,使用@RequestBody可以获取application/json中的参数。
代码语言:txt
复制
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file, @RequestPart("data") String data) {
    // 上传文件逻辑
    // 解析json数据逻辑
    return "success";
}
  1. 使用自定义的HttpMessageConverter:创建一个实现HttpMessageConverter接口的类,自定义解析请求的Content-Type,然后在Controller的方法参数中直接使用该自定义的类来获取请求参数。
代码语言:txt
复制
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MyHttpMessageConverter());
        super.configureMessageConverters(converters);
    }
}

public class MyHttpMessageConverter extends AbstractHttpMessageConverter<Object> {

    public MyHttpMessageConverter() {
        super(MediaType.ALL);
    }

    @Override
    protected boolean supports(Class<?> clazz) {
        return true;
    }

    @Override
    protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
        // 解析请求参数逻辑
        return null;
    }

    @Override
    protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
        // 处理响应逻辑
    }
}

@PostMapping("/upload")
public String uploadFile(@RequestBody Object requestData) {
    // 解析请求参数逻辑
    return "success";
}

以上是使用相同方法spring boot Rest支持multipart/form-data和application/json的几种方法,根据实际需求和个人喜好选择适合的方法即可。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券