HTTP接口调用一般有以下几种传参方式:
参考文章:【HTTP】HTTP 接口调用,传参方式:params 和 request body - 简书 (jianshu.com)
- 查询字符串参数(Query Parameters):参数直接附加在URL的末尾,以问号(?)开始,多个参数之间使用与号(&)分隔。例如:
https://api.example.com/users?name=John&age=25
- URL路径参数(Path Parameters):参数直接嵌入在URL的路径中,通常用于标识资源的唯一标识符或者指定特定的操作。例如:
https://api.example.com/users/12345
- 请求体参数(Request Body Parameters):参数作为HTTP请求的主体部分(请求体)发送,通常用于传递大量数据。常见的请求体参数格式包括JSON、XML、表单数据等。
- 请求头参数(Request Header Parameters):参数作为HTTP请求的头部信息中的一部分发送。例如,可以使用
Authorization
头部字段来传递身份验证令牌。- Cookie参数(Cookie Parameters):参数存储在HTTP请求的Cookie中,服务器可以通过读取Cookie来获取参数值。
- 文件上传参数(File Upload Parameters):用于上传文件时的参数,通常以表单形式发送,可以通过请求体或者请求头来传递。
VUE axios传参方式query和body同时传参解决方式
参考文章:axios中post的body与query传参区别及使用总结_post请求的query是什么-CSDN博客
// 参数情况:(interfaceState:query参数,ID:body参数)
this.$axios({
url:`${this.url}updateCompanyState`,
method:'post',
data:{ID: '123'}, // body参数
params:{interfaceState:state} // query参数
}).then(res=> {
console.log(res)
})
Springboot接收参数注意事项
@RequestBody :接收body的参数,一般单个出现,需要传多个对象参数时,可以再封装一层,目前我这种小白是这么干的
@RequestParam :接收query参数,即参数直接附加在URL的末尾,以问号(?)开始,多个参数之间使用与号(&)分隔的参数
如果不加任何注解,默认是@RequestParam
两个注解都有require属性,标识是否必传,默认是true即必传,不传会报参数missing,如果不确定需不需要传,设置成false即可
@RequestParam可以指定别名,name和value属性,name完全等价于value,但两个不能同时使用,会报错