Axios发送请求时params和data的区别

在使用axios时,注意到配置选项中包含params和data两者,以为他们是相同的,实则不然。

因为params是添加到url的请求字符串中的,用于get请求。

而data是添加到请求体(body)中的, 用于post请求。

比如对于下面的get请求:

axios({
   method: "get",
   url: "[http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac] 
   (http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac)",
   params: {
      info: "西安天气"
   }
})
代码块

如果我们将params修改为data,显然是不能请求成功的,因为get请求中不存在data这个选项。

1、HTTP请求过程中,get请求:表单参数以name=value&name1=value1的形式附到url的后面;
2、post请求:表单参数是在请求体中,也是name=value&name1=value1的形式在请求体中。
POST表单请求提交时,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8。
在html中form的Content-type默认值:Content-type:application/x-www-form-urlencoded
如果使用ajax请求,在请求头中出现 request payload导致参数的方式改变了 ,那么解决办法就是:
headers: {'Content-Type':'application/x-www-form-urlencoded'}
或者使用ajax设置:
$.ajaxSetup({contentType: 'application/x-www-form-urlencoded'});

注意:
params 和 data 对象传参数给后台时:字段名(key)不需要用let定义的,直接写就可以了,但是value是变量一定要定义

image

id ,city ,plot , groupName都是字段名(key)不用定义

本文属转载,纯属个人记录

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。