zoukankan      html  css  js  c++  java
  • axio post 请求后端接收不到参数的解决办法

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

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

    在拦截器前修改

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

    // 创建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序列化参数

    //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'
          })
        }
      ]
    })

    网上方案说要加

    instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

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

    到此,这个问题解决了

  • 相关阅读:
    Nacos(六):多环境下如何“管理”及“隔离”配置和服务
    nginx 反向代理配置(二)
    nginx 反向代理配置(一)
    nginx的access_log与error_log
    MySQL 慢查询日志
    php-fpm 慢日志查询
    理解 OAuth2.0
    如何在 Apache 里修改 PHP 配置
    Go-常见的面试题(一)
    Go 嵌入类型
  • 原文地址:https://www.cnblogs.com/wuyuchao/p/10300250.html
Copyright © 2011-2022 走看看