前置知识
常见请求头参数(Content Type)3种
Content-Type | 传输数据格式 | 用途 |
---|---|---|
multipart/form-data | 二进制数据 | 用于上传文件或表单数据,适用于表单中包含文件上传的情况。 |
application/json | JSON | 用于传输 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, DELETE | application/x-www-form-urlencoded, multipart/form-data |
@RequestBody | 从请求体中获取值 | POST, PUT, PATCH | application/json, application/xml, text/plain |
@PathVariable | 从 URL 中获取值 | GET, POST, PUT, DELETE | 与ContentType无关 |
@RequestPart | 处理 multipart/form-data 类型数据 | POST, PUT, PATCH | multipart/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博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤