node前后端通讯问题

一、后端一般解析的两种格式

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解析格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值