前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >axio post 请求后端接收不到参数的解决办法

axio post 请求后端接收不到参数的解决办法

作者头像
吴裕超
发布2019-05-25 17:55:21
1.7K0
发布2019-05-25 17:55:21
举报
文章被收录于专栏:吴裕超吴裕超

原因是没有对参数进行序列化

默认情况下,axios将JavaScript对象序列化为JSON。 要以应用程序/ x-www-form-urlencoded格式发送数据。

在拦截器前修改

方法一,用原生js序列化参数

代码语言:javascript
复制
// 创建axios实例
const service = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 30000, // 请求超时时间
  transformRequest: [function(data) {
    const str = []
    for (const i in data) {
      str.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]))
    }
    return str.join('&')
  }]
})

方法二,用qs序列化参数

代码语言:javascript
复制
//npm install axios的时候默认会安装qs
// qs相关的问题请搜索"nodejs qs"或者看这里https://www.npmjs.com/package/qs
import qs from 'qs';

const service = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 30000, // 请求超时时间
  transformRequest: [
    function(data) {
      return qs.stringify(data, {
        arrayFormat: 'brackets'
      })
    }
  ]
})

网上方案说要加

代码语言:javascript
复制
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

我没有加,因为我发现默认axios的post就是x-www-form-urlencoded。

到此,这个问题解决了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档