在前端对后端进行数据请求时,http的请求参数一般分为三种:Query String Parameters、Request Payload、Form Data。以下以axios为例。
*****
**Query String Parameters**:
先说Query String Parameters,这种请求参数是用url string的形式进行传递,即?后面拼user=yyj&password=123这种字符串,不同key:value用&进行分割。一般这种请求是用在get请求,可是根据我请求过的接口来看,这并不局限于get请求,post请求也能用,主要还是看后端给的接口。
*****
**Request Payload**:
当请求头里面的content-type为application/json时,就是Request Payload形式的请求。实际开发遇到后端要求这种请求,一般用于大量json数据的处理,或文件的上传之类的。记得一定要在请求里指定'Content-Type':'application/json'。下面示例:
```
axios.post("url", params , {
'Content-Type':'application/json' }).then((res) => {
console.log(res);
}).catch((error) => {
console.log(error);
});
```
而且不同的http请求并不是孤立的,比如Query String Parameters+Request Payload的混合请求,一般用于数据格式比较多的情况,或者后端要求这样的请求,示例如下:
```
axios.post("url?"+string, params, {
'Content-Type':'application/json' }).then((res) => {
console.log(res);
}).catch((error) => {
console.log(error);
});
```
string就是user=yyj&password=123这种字符串,如果这串字符串比较长,可是先写成对象形式,然后转成这种字符串。下面提供一下我百度到的一个简单好用的方法:
```
function (obj) {
Object.keys(obj).map(function (key) {
return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]);
}).join("&");
}
```
*****
**Form Data**:
这种方式也非常常用,一般未指定content-type时会默认这种。它的参数会以Form Data的形式进行传递,不会显式出现在请求url中。我刚开始学习axios请求时,会直接把要传递的参数类似于Request Payload一样放在后面,然后发现参数根本没有传到后端。于是经过请教对数据进行了一下处理,方法如下:
```
function (jsonParam) {
let nodeData ="";
if(jsonParam){
for(var i in jsonParam){
if(jsonParam[i] || jsonParam[i]===0 || jsonParam[i]==='0'){
nodeData += "&"+i+"=" +jsonParam[i];
}
}
if(nodeData){
nodeData = nodeData.slice(1);
}
}
return nodeData;
}
```
经过此方法处理过的数据就能正确传到后端了。
*****
参考链接:
[https://www.jianshu.com/p/c81ec1a547ad]()
- JS系列
- jQuery和axios的同步请求
- FormData和文件上传
- Http请求参数系列
- 面向对象:JS中的类与继承
- super关键字总结
- import和require语法的报错解决
- 常用的N个JS函数
- ES6新增的Set和Map
- 关于this的学习
- 人人都要会的防抖和节流
- AJAX的简单实现
- Vue
- nuxt
- 在nuxt中引入qrcode或者其他依赖包
- iVew
- 树形控件Tree的render函数
- 自定义组件:Upload封装
- React
- antd自适应高度表格
- 两个常用生命周期函数总结
- antd表格跨行处理(动态数据)
- antd中表单自定义验证踩坑
- Form+Upload实现文件上传全步骤
- 在react中实现Excel导出
- 表格嵌套和子表展开的处理
- 关于表格打印的一点思路
- Select组件中的模糊筛选
- echarts使用与总结
- echarts在react中的使用
- 简单的双层上下钻
- 复杂的多层上下钻(多次请求)
- 复杂的多层上下钻(单次请求)
- Git使用
- git基础一:安装git以及基本命令
- git基础二:add和commit
- 地图API
- 手动绘制点来实现驾车导航
- 地图自定义控件的使用
- 利用自定义标注实现头像展示
- 杂谈与总结
- 谈代码的可读性
- 简单总结判断代码质量的维度
- 3W模型看面向对象
