一、后端一般解析的两种格式
1.表单格式
urlencoded:又叫from格式,x-www-form-urlencoded,是一种表单格式
组成:键值对 ==> a=b a为名字,b为对应值,
多键值: 用‘&’链接 ==》a=b&c=d
例子:http://127.0.0.1:8080?a=b&c=d
2.JSON格式
用 {} 表示对象
对象是由属性组成的
属性是由键值对组成的
键和值之间用 ; 隔开
属性之间用 , 隔开
可以存贮,对象,数组,逻辑,空值,不允许存在注释,能互相嵌套
例子:
{"hours":[],"days":[]}
二、后端解析模块
1.body-parser 模块
安装 npm install body-parser
使用方法
const Express = require('express');
const body_parser = require('body-parser');
api.use(body_parser.urlencoded({ extended: false })); -->此处解析了 urlencoded格式,也就是表单格式
api.use(bodyParser.json({ type: 'application/*+json' })-->此处解析了 json格式;
三、前端利用axios请求数据
1.普通的post请求
const axios = require('axios');
axios({
method:'post',
url:'http://127.0.0.1:8081/setting/revise_psw',
data: {
username: '111admin',
psw: '123123',
newspsw: '123456789'
}
}).then(res=>{
console.log(res)
})
如果此时后端只接受urlencoded 表单格式时,后端将无法获取body数据
2.原因
根本原因在于axios 使用 post 发送数据时,默认是直接把 json 放到请求体中提交到后端的。而后端仅仅接受表单格式的数据。
3.解决本办法
3.1第一种
const Qs = require('qs')
data: Qs.stringify({
username: '111admin',
psw: '123123',
newspsw: '123456789'
})
利用qs模块 包裹一下参数
3.2第二种
transformRequest: [function (data) {
// 对 data 进行任意转换处理
return Qs.stringify(data)
}]
利用axios的transformRequest 进行处理
3.3第三种
api.use(bodyParser.json({ })-->此处解析了 json格式;
后端增加json解析格式