前后端传参方式问题

202 阅读2分钟

HTTP接口调用一般有以下几种传参方式:

参考文章:【HTTP】HTTP 接口调用,传参方式:params 和 request body - 简书 (jianshu.com)

  1. 查询字符串参数(Query Parameters):参数直接附加在URL的末尾,以问号(?)开始,多个参数之间使用与号(&)分隔。例如:https://api.example.com/users?name=John&age=25
  2. URL路径参数(Path Parameters):参数直接嵌入在URL的路径中,通常用于标识资源的唯一标识符或者指定特定的操作。例如:https://api.example.com/users/12345
  3. 请求体参数(Request Body Parameters):参数作为HTTP请求的主体部分(请求体)发送,通常用于传递大量数据。常见的请求体参数格式包括JSON、XML、表单数据等。
  4. 请求头参数(Request Header Parameters):参数作为HTTP请求的头部信息中的一部分发送。例如,可以使用Authorization头部字段来传递身份验证令牌。
  5. Cookie参数(Cookie Parameters):参数存储在HTTP请求的Cookie中,服务器可以通过读取Cookie来获取参数值。
  6. 文件上传参数(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,但两个不能同时使用,会报错