HTTP 请求参数之三种格式

Query String Parameters 、Form Data 、 Request Payload 三种格式的区别。主要是因为 Content-Type(用于表明发送数据流的类型) 与请求方式 method 不同,导致传递的数据格式不同。

1. Query String Parameters 格式: ?key=value&key=value
  • 参数会以 url string 的形式进行传递,即?后的字符串则为其请求参数
  • 常用在 GET 请求方式时使用
2. Form Data 格式:key=value&key=value 键值对形式
  • Content-type 设置为 application/x-www-form-urlencoded;charset=utf-8
  • 参数会以 Form Data 的形式传递给接口,不会显示在接口 url 上。
3. Request Payload 格式:{key: value, key: value}
  • Content-type 设置为 application/json;charset=utf-8
  • 参数会以 Request Payload 的形式(数据为 json 格式)传递给接口,不会显示在接口 url 上。
     
常见的Content-Type
  • 页面资源类型: text/html, text/plain, text/css, text/javascript, image/jpeg, image/png, image/gif,
  • ajax的请求,表单提交或上传文件的常用的资源类型: application/x-www-form-urlencoded(默认), multipart/form-data, application/json, application/xml
设置Content-Type
  1. 原生XMLHttpRequest:
  xhr.setRequestHeader("Content-type","application/json;charset=utf-8") 

2.jq ajax:

$.ajax({
  url: '/api/'
  methods: 'post'
  contentType: "text/xml"
}) 

3.axios:

axios.post(url, qs.stringify(params), {
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  },
}).then(res => res.data)

或者 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'

常用转化请求参数的方式
  1. JSON.stringify()

  2. axios中 qs.stringify()将对象或者数组序列化成URL的格式,对象序列化

  • 对象序列化
    let obj = {
      methods: 'query_stu'
      id: 1,
      name: 'chenchen'
    }
    qs.stringify(obj)
    //   methods=query_stu&id=1&name=chenchen    这就是我们的传到服务器的url
    

  • 数组序列化
  • let arr = [2,3]
    qs.stringify({a:arr})
    // 'a[0]=2&a[1]=3' url中会带有数组的下标a[0]、a[1],这并不是我们一般的处理办法
    
    // 常用并推荐使用
    let arr = [2,3]
    qs.stringify({a:arr},{indices:false});
    // 'a=2&a=3' 注意这个格式,一般使我们常用的格式哦~
    
    其中:indices:false,去除默认处理的方式
    

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SWUT胖虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值