前后端交互数据格式之form-data和json

前后端数据交互的方式

  1. form-data格式
  2. json字符串格式

一、form-data格式

  • 请求头为 application/x-www-form-urlencoded 对应的请求数据格式就是form-data格式
  • 数据格式为 : username=xiaohu&password=123456
  • 默认情况下,axios会将JavaScript对象序列化为JSON
  • 所以我们需要使用qs模块将JSON格式的数据序列化为form-data格式
    1、设置请求参数传入params(会拼接到url后面)
export function login(params) {
  return request({
    url: `${nodeUrl}/login.do`,
    method: 'post',
    params
  })
}

2、设置content-type

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, 
  timeout: 5000, // request timeout
  headers: {
    'content-type': 'application/x-www-form-urlencoded'
  }
})

3、node获取请求参数

router.post('/login.do', (req, res, next) => {
  let sql = 'select * from userinfo where username = ? '
  let arr = [req.query.username]
  console.log(req.query)
  db(sql, arr).then((data) => {
    let res_data = data[0]
    if (res_data.password == req.query.password) {
      res.send(successObj(res_data.role))
    } else {
      res.send(failObj(null))
    }
  }).catch((err) => {
    console.error(err)
    res.send(failObj(null))
  })
})

4、浏览器调试


 

二、json字符串格式

1、设置请求参数传入data(会放到请求体中)

export function login(data) {
  return request({
    url: `${nodeUrl}/login.do`,
    method: 'post',
    data
  })
}

2、设置content-type

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, 
  timeout: 5000, // request timeout
  headers: {
    'content-type': 'application/json' 
  }
})

3、node获取请求参数

router.post('/login.do', (req, res, next) => {
  let sql = 'select * from userinfo where username = ? '
  let arr = [req.body.username]
  db(sql, arr).then((data) => {
    let res_data = data[0]
    if (res_data.password == req.body.password) {
      res.send(successObj(res_data.role))
    } else {
      res.send(failObj(null))
    }
  }).catch((err) => {
    console.error(err)
    res.send(failObj(null))
  })
})

4、浏览器调试

 

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值