首页
学习
活动
专区
工具
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的几种方法,根据实际需求和个人喜好选择适合的方法即可。

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

相关·内容

SpringBoot系列之集成Resteasy实现RESTFul接口

开发环境 SpringBoot2.2.1.RELEASE resteasy-spring-boot-starter3.3.2.Final JDK1.8 Maven 3.2+ resteasy-multipart-provider3...Spring官网的,也可以使用阿里的,然后点击Next 选择jdk版本maven 因为有些jar在start.spring.io里没集成,所以需要自己加上,可以参考我的配置,注意,这个resteasy-spring-boot-starter...; @Component @ApplicationPath("/rest/") public class JAXRSApplication extends Application { } application.yml...MultipartFormDataInput 来实现文件上传,注意客户端传入的媒体格式,要定义为MediaType.MULTIPART_FORM_DATA,也就是form-data,才能支持文件上传 package...Component public class FileUploadEndpoint { @Path("/v1/fileUpload") @POST @Produces({MediaType.APPLICATION_JSON

72970
  • 180730-Spring之RequestBody的使用姿势小结

    接口调用 上面写完了,接下来的重点就是如何使用了,在使用之前,有必要了解下 RequestBody 这个注解出现的原有以及应用场景(换句话说它RequestParam有什么区别,为什么要单独的搞一个这个东西出来...multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。.../x-www-form-urlencodedmultipart/form-data,默认为application/x-www-form-urlencoded。...如果有传文件的场景,Content-Type类型会升级为multipart/form-data,这一块不详细展开,后面有机会再说 Post json串 post表单除了前面一种方式之外,还有一种也是我们常见的...请求方法 RequestBody支持GET方法么?前面都是采用post提交参数,如果改成GET会怎样?

    65920

    Django(49)drf解析模块源码分析

    of parsers that this view can use. """ return [parser() for parser in self.parser_classes] 该方法实例化并返回此视图可以使用的解析器列表.../json' FormParser:media_type = 'application/x-www-form-urlencoded' MultiPartParser: media_type = 'multipart...application/x-www-form-urlencoded提交数据,会有如下报错 { "detail": "不支持请求中的媒体类型 “application/x-www-form-urlencoded...} 然后我们使用multipart/form-data提交数据,也会报错 { "detail": "不支持请求中的媒体类型 “multipart/form-data; boundary=----...} 最后我们使用application/json提交数据,响应成功 "drf post ok" 自定义解析器 如果我们想自定义一个解析器,也很简单,默认的3个解析器都继承自BaseParser,我们查看下源码

    46710

    SpringBoot系列之基于Jersey实现文件上传API

    项目,Server url可以使用Spring官网的,也可以使用阿里的,然后点击Next 选择jdk版本,还有使用maven做jar管理 选择需要的jar,选择之后,生成的项目会自动加上...maven配置 如果是自己搭建的项目,可以自己加上spring-boot-starter-jersey的maven配置 org.springframework.boot... spring-boot-starter-jersey 点击Next会生成一个SpringBoot项目...,注意不要加上版本号,因为自己加的版本号可能会spring-boot-starter-jersey版本冲突,不加上版本号,通过SpringBoot的版本仲裁机制,自动加载对应版本的jar,加上jersey-media-multipart...javax.ws.rs.core.MediaType; import java.io.InputStream; @Path("/api") @Service @Produces({MediaType.APPLICATION_JSON

    56440

    实战:Spring Boot 程序如何做好 Web 层的测试

    引言 本文将讨论如何针对 Spring Boot 程序的 Web 层进行测试的,借助 MockMvc API 以及常见的测试库实现 Web 层方法的测试覆盖,以及如何定制 MockMvc。...,官方建议先静态导入下面这些类,用于编写简洁的步骤方法验证方法。...讲解完测试 GET 请求方法,我们再了解下 POST 方法如何测试,这里按照 POST 请求携带的内容类型(Content-Type) 分类,主要有三种:表单提交时使用的格式-application/...x-www-form-urlencoded,JSON 数据格式-application/json,文件上传时使用的格式-multipart/form-data,每种情况对应的测试代码如下,就不一一详细介绍...MockMvc 进阶 前面我们使用到的 MockMvc 是由 Spring 帮我们注入的,如果我们想要自定义 MockMvc,又该如何做呢?

    97620

    精通 Spring Boot 系列文(6)

    精通 Spring Boot 系列文(1) 精通 Spring Boot 系列文(2) 精通 Spring Boot 系列文(2) 精通 Spring Boot 系列文(4) 精通 Spring Boot...系列文(5) Spring Boot 文件的上传下载 说真的,在 Spring Boot 实现文件下载,真的是方便到让我颤抖。...Spring Boot 在 web 模块中集成了 Spring MVC ,文件上传这块儿的支持是可以通过即插即用的 MultipartResolver 实现类:CommonMultipartResolver...Spring Boot 提供的文件上传自动化配置类是 MultipartAutoConfiguration 中默认使用了 StandardServletMultipartResolver,在上传文件甚至能够做到零配置...setter 方法 } 3)添加 userRegister() 方法 在 userRegister() 方法形参列表中,使用 @ModelAttribute 注解将表单提交的数据绑定到 User 对象中

    36130

    【企业云端全栈开发实践-3】Spring Boot文件上传服务+拦截器

    一、静态资源访问 使用IDEA创建Spring Boot项目时,会默认创建classpath://static/目录,静态资源一般放在这个目录下即可。...表单的enctype="multipart/form-data"时,其传输的数据形式如下。...如果要更改这个默认值需要在配置文件(如application.properties)中加入 如下两个配置即可: spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size...=10MB 当表单的enctype=“multipart/form-data”时,可以使用MultipartFile获取上传的文件数据,再通过transferTo方法将其写入磁盘中去。...3、通用行为:读取cookie得到用户信息并且将用户对象放入请求,从而方便后续流程使用Spring Boot定义了HandlerInterceptor接口来实现自定义拦截器的功能。

    10810

    Retrofit解析2之使用简介

    5、Form表单提交与multipart/form-data 6、Retrofit2 对multipart/form-data支持 7、总结 一、什么是Retrofit Retrofit的官网是这样说的...四、为什么要用Retrofit 1、咱们一起来看下Retrofit的优点: 请求的方法参数注解可以定制 支持同步、异步RxJava 超级解耦(我最爱) 可以配置不同的反序列化工具来解析数据,如json...5、enctype 指定的 content-type application/x-www-form-urlencoded application/json text/xml multipart/form-data...(一)、如何使用RetrofitokHttp封装multipart/form-data 1、在retrofit2中: 使用** @retrofit2.http.Multipart : 标记一个请求是...七、总结 Retrofit将REST API抽象成Java接口,使用注解来描述每一个API地址请求,支持URL参数替换(包括查询参数路径参数),以及表单编码多部分请求功能。

    4.8K30

    一文带你看懂 前后端之间图片的上传与回显

    当我们使用请求上传文件时,浏览器将使用流一次发送一个块的数据。这是因为我们不能一次将整个文件放在请求对象中。multipart/form-data我们直接去打印这个文件的请求。...平常我们使用这个类型都是把表单数据使用url编码后传送给后端,二进制文件当然没办法一起编码进去了。所以multipart/form-data就诞生了,专门用于有效的传输文件。...可以用application/json吗文件上传通常使用multipart/form-data格式,而不是application/json,因为multipart/form-data格式允许在HTTP请求中传输二进制文件数据...multipart/form-data格式允许在一个请求中同时发送文本数据二进制文件数据,这对于上传文件非常有用。...相比之下,application/json格式虽然可以用于传输文本数据,但不支持直接在请求体中传输二进制文件数据。

    2.4K10

    epan | 开发笔记

    boot如何实现切割分片上传_java_脚本之家 Spring Boot[五]:WebUploader分片断点上传 - 知乎 分片上传 - 对象存储 OSS - 阿里云 或者叫 分片传输,分片方案不一定用于浏览器上传服务端...默认值都是「application/x-www-form-urlencoded;charset=utf-8」 multipart/form-data POST 数据提交的方式, 使用表单上传文件时,必须让... 表单的 enctype 等于 multipart/form-data POST http://www.example.com HTTP/1.1 Content-Type:multipart...------WebKitFormBoundaryrGKCBY7qhFd3TrwA-- application/json 内容以 json字符串 格式组织,放于请求体 POST http://www.example.com...格式数据时,使用 @RequestBody ,并且将前端请求时的Content-Type 改为 application/json 参考: https://www.cnblogs.com/yuhuameng

    74820

    江帅帅:精通 Spring Boot 系列 06

    Spring Boot 文件的上传下载 说真的,在 Spring Boot 实现文件下载,真的是方便到让我颤抖。...Spring Boot 在 web 模块中集成了 Spring MVC ,文件上传这块儿的支持是可以通过即插即用的 MultipartResolver 实现类:CommonMultipartResolver...Spring Boot 提供的文件上传自动化配置类是 MultipartAutoConfiguration 中默认使用了 StandardServletMultipartResolver,在上传文件甚至能够做到零配置...setter 方法 } 3)添加 userRegister() 方法 在 userRegister() 方法形参列表中,使用 @ModelAttribute 注解将表单提交的数据绑定到 User 对象中...这里使用了 ResponseEntity 类型,就能定义返回的 HttpHeaders、BodyBuilder HttpStatus,然后返回客户端下载。

    43500

    post提交数据的常见方式及php对应的接收方法

    上例可以看到,同样是发送name,age,使用multipart/form-data请求要大了很多,那么该方式存在的意义是什么呢? 发送文件时,必须使用该方式。...我们注意到,application/x-www-form-urlencoded方式会对数据进行urlencode而multipart/form-data则不会。...3.raw 3.1 发送 对应的content-type有application/json,text/plain等,都是将一段文本直接发给服务端。服务端的接收方式也相同,所以将其归为一类。...":"ball球","age":99} body中是一段json数据,但你也可以使用text/plain发送该数据,对于php服务端来说并没有特别的影响,只是使用application/json更符合规范...四.总结 发送 接收 application/x-www-form-urlencoded $_POST multipart/form-data(数据) $_POST multipart/form-data

    1.8K20

    捋一捋上传下载

    老师问我 Spring MVC 的工作流程 分享 | 后端必会的Spring MVC核心类注解 还有人不知道?Spring MVC的数据绑定来了 开发必掌握!...JSON数据交互RESTful开发 拦截器的骚操作 SpringBootSpringCloud可以看这里 初次见面,请多多指教。。...时隔一个月,让大家久等了 Spring Boot整合JustAuth,实现第三方登录 SpringBoot-Vue 前后端分离开发 微服务架构之Spring Cloud入门 微服务架构之Spring Cloud...在Spring MVC环境中,实现文件下载大致可分为如下两个步骤: 在客户端页面使用一个文件下载的超链接,该链接的href属性要指定后台文件下载的方法以及文件名(需要先在文件下载目录中添加了一个名称为“...通过本章的学习,我们要学会如何Spring MVC环境下进行文件上传下载,并能够掌握中文名称文件下载时乱码的解决方案。 革命尚未成功,同志仍需努力,冲冲冲

    43110
    领券