前置知识

常见请求头参数(Content Type)3种

Content-Type传输数据格式用途
multipart/form-data二进制数据用于上传文件或表单数据,适用于表单中包含文件上传的情况。
application/jsonJSON用于传输 JSON 格式的数据,适用于前后端交互数据的传输。
application/x-www-form-urlencoded字符串用于传输表单数据,适用于表单提交数据的情况。

不同的Content-Type有不同的传参规范

form-data、x-www-form-urlencoded都是表单数据,但x-www-form-urlencoded不支持文件上传。

@RequestParam 与 @RequestBody 与 @PathVariable 与 @RequestPart 详解

注解描述支持的请求方式支持的ContentType
@RequestParam从请求参数中获取值,包装类类型不可用(基本类型的包装类型除外)GET, POST, PUT, DELETEapplication/x-www-form-urlencoded, multipart/form-data
@RequestBody从请求体中获取值POST, PUT, PATCHapplication/json, application/xml, text/plain
@PathVariable从 URL 中获取值GET, POST, PUT, DELETE与ContentType无关
@RequestPart处理 multipart/form-data 类型数据POST, PUT, PATCHmultipart/form-data

@RequestBody 不支持Get请求

主要用来接收Json,前端不能使用GET方式提交数据,而是用POST方式进行提交。

{
    "templateId": "AAAAAAAA",
    "templateTitle": "货物配送信息",
    "templateContent": "模版内容。。。。。。。。。。。"
}

Postman测试示例:

点击Body -> 点击raw -> 点击Json

@RequestBody一个参数无法获取数据解决方案 注意不支持Get

如果接口只有一个参数非对象(比如String ID或者Integer ID),不可以传递变量名ID,但可以直接把数据映射到参数上。如果你传递{"ID":"1"}的话,实际接收但是{"ID":"1"}。注意如果前端请求头是:application/json的话。要么前端换application/form-data,要么我们将对象(哪怕只有一个属性,也不能直接使用String ID。)且使用@RequestBody注解包起来!不然没有任何办法获取真实的有效数据!

@RequestParam

参数需要放在是form-data,传递Json无法获取值

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤