前端|axios发送post请求时将请求参数放在params和data配置项的区别,java后端如何获取()

axios发送post请求 这里为什么只提到了post请求,因为get请求都是把参数放在params属性下,所以没得选,发送过程中参数被拼接到了url上,从控制台看url后面参数是?param1=XX&&post请求的情况比较多。
axios发送post请求参数有两种传法,一种是放在params属性中,适合传参较少且数据简单的情况,如下案例:

// 查询列表 export function queryList(query) { return request({ url: '/exam/list', method: 'post', params: query }) }

另一种是放在data属性中,如果传参中含有引号、等号、拼接的json串或传参的数据量较大时只能用这种,如下案例:
export function saveMend(query) { return request({ url: '/mend/save', method: 'post', data: query }) }

调用时传参格式一样的,都是传一个对象类型的值:
queryReminderList(this.queryParams).then(res => { console.log('列表返回', res) if (res && res.data) { this.tableData = https://www.it610.com/article/res.data this.total = res.count || 1 } }).catch(err => { console.log(err) })

【前端|axios发送post请求时将请求参数放在params和data配置项的区别,java后端如何获取()】两种传参方式区别及java后端如何获取?
  1. 将参数放在params属性中传递的是拼接字符串的形式,后面也会拼接到url上(这里跟get请求不一样,直接在浏览器输入拼接后的url并不能把参数传到后台)
  • java后端我都是用request对象接收(不太喜欢建实体类),用request.getParameter(“参数名”)获取参数,也可以用JavaBean实体类,不用加注解。如果想单独获取某个属性可以加@RequestParam注解,
    如单独获取page和limit参数写法:
bleDataInfo tableQuery(@RequestParam(defaultValue="https://www.it610.com/article/1")int page, @RequestParam(defaultValue="https://www.it610.com/article/10")int limit, HttpServletRequest request){ String sort = request.getParameter("sort"); 。。。。。 }

  • 用postman测试接口的时候参数要放在Params选项卡。
  1. 将参数放在data配置项中往后台传的是一个对象类型
  • java后端接口获取我一般用JSONObject对象,用jsonObject.getString(“参数名”)获取参数,也可以用JavaBean实体类,参数都要加@RequestBody注解
  • 用postman测试接口的时候参数放在请求体(body)中。
如果没有按适当的场景传参
  • 比如在get类型请求中传参用了data配置项,这种情况不会报错,就是参数获取不到罢了。
  • 比如在post类型的请求中比较复杂的参数放在了params配置项,可能会报莫名其妙的错误,我遇到过一个保存表单的请求,参数含有一个子列表数据,请求发送后报CORS跨域问题,看着好像很复杂,其实就是axios请求参数配置项配置错了。。

    推荐阅读