HTTP 请求参数之三种格式

news/2024/11/25 19:52:32/

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,去除默认处理的方式
    


http://www.ppmy.cn/news/1297855.html

相关文章

胡圆圆的暑期实习经验分享

背景 实验室一般是在研究生二年级的时候会放实习,在以后的日子就是自己完成毕业工作要求,基本上不再涉及实验室的活了,目前是一月份也是开始准备暑期实习的好时间。实验室每年这个时候都会有学长学姐组织暑期实习经验分享,本着不…

vue3中路由守卫的快速上手

路由守卫或者说路由拦截,在我们实际开发前端项目中是经常用到的操作; 通过路由守卫,可以在用户访问某个路由之前进行权限验证。(全局前置守卫)例如,可以检查用户是否登录,是否具有访问该路由的…

jmeter连接数据库

下载jdbc 在浏览器输入 mysql jdbc官网 ; 网址:MySQL :: MySQL Connectors 点击 Download 查看自己mysql服务的版本,找到对应版本的jdbc 所以下载5版本的jdbc 安装jdbc(绿色版安装) 操作jmeter 打开jmeter&#xff0…

Python 架构模式:引言到第四章

引言 原文:Introduction 译者:飞龙 协议:CC BY-NC-SA 4.0 为什么我们的设计会出错? 当你听到混乱这个词时,你会想到什么?也许你会想到喧闹的股票交易所,或者早上的厨房——一切都混乱不堪。当你…

js中对数字,超大金额(千位符,小数点)格式化处理

前言 这个问题的灵感来自线上一个小bug,前两天刚看完同事写的代码,对数字类型处理的很好,之前一直都是用正则和toFixed(2)处理数字相关,后面发现使用numeral.js处理更完美。 对于下面这种数据的处理,你能想到几种方法…

kubernetes volume 数据存储详解

写在前面:如有问题,以你为准, 目前24年应届生,各位大佬轻喷,部分资料与图片来自网络 内容较长,页面右上角目录方便跳转 概述 容器的生命周期可能很短,会被频繁的创建和销毁 保存在容器中的…

滑动窗口协议仿真(2024)

1.题目描述 滑动窗口协议以基于分组的数据传输协议为特征,该协议适用于在数据链路层以及传输层中对按 顺序传送分组的可靠性要求较高的环境。在长管道传输过程(特别是无线环境)中,相应的滑动窗口 协议可实现高效的重传恢复。附录 …

失败重跑与重复执行插件

章节目录: 一、失败重跑插件1.1 概述1.2 安装1.3 参数讲解1.4 代码示例 二、重复执行插件2.1 概述2.2 安装2.3 代码示例 三、结束语 一、失败重跑插件 1.1 概述 pytest-rerunfailures 是一个用于 pytest 测试框架的插件,它提供了重新运行失败的测试用例…