User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   Web   ›   Ajax   ›   正文
Ajax

axios自定义请求配置—transformRequest

2020-06-16 21:46:31
3805  0 1

阅读完需:约 2 分钟

transformRequest在向服务器发送前,修改请求数据

PS:就是可以将原本的Form Data和json的连接头相互转换。

关于formdate和json的文档:

Http请求中Form Data与Request Payload的区别

例子:

export const postKeyValueRequset=(url,params)=>{
    return axios({
      method:'post',
      url:`${base}${url}`,
      data:params,
      transformRequest:[function (data) {
          let ret='';
          for (let i in  data){
            ret+=encodeURIComponent(i)+'='+encodeURIComponent(data[i])+'&'
          }
          // console.log(ret);
          return ret;
      }],
      header:{
        'Content-Type':'application/x-www-form-urlencoded'
      }

    })
}

将原本需要用json 的进行传输的的格式用 'Content-Type':'application/x-www-form-urlencoded'来输出当成了formdate,并且用 transformRequest 来将data内容转换成了 formdate 格式,limit=50&offset=0&t=123 用 & 进行连接传输!

详细:

<script>
  import axios from 'axios'
  import qs from 'qs'

  // axios配置
  let http = axios.create({
    baseURL: 'https://www.easy-mock.com/mock/5d41580a1a802c0d5e53dcc2/example/',
    // 可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL

    transformRequest: [function (data) {
      // `transformRequest` 允许在向服务器发送前,修改请求数据
      // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法

      // return data
      // 必须要return不然console.log是undefine,而且network中也找不到
      // 但是return data:network中返回值是【object object】,所以需要用qs格式化一下
      // 所以需要return qs.stringify(data)

      return qs.stringify(data)
      // 此时network显示出的内容是
      // username: xiaoming
      // pass: 12345
      // 但是这种形式后台依旧无法识别,所以需要用到headers来自定义格式
    }],

    headers: {'content-type': 'application/x-www-form-urlencoded'},
    // 设置请求头,请求根据后端可以自定义,服务器处理数据用的
    // 后端可以根据请求传来的信息进行一些操作
    // 此时在network中查看可以发现传递的数据是:name=xiaoming&age=12&sex=man
  })
  export default {
    name: "create_headers",
    methods: {
      postUrl () {  //post方法
        http.post('bb',
          {
            'username': 'xiaoming',
            'pass': 12345
          },
          // f12在network查看到
          //   pass: 12345
          //   username: "xiaoming"

          // 但后台是查询不到的,
          // 必须要像get方法一样拼接才可以 username=xiaoming&pass=12345
          // 因此需要用到qs,在post提交数据前,需要把提交的数据进行序列化
          // 不然后端无法获取前端传递的数据
          // 所以需要用到transformRequest配置和headers配置
        )
          .then((res) => {
            console.log('post请求成功', res.data)
          })
          .catch((err) => {
            console.log('post请求成功', err)
          })
      }
    },
    created () {
      this.postUrl()
    }
  }
</script>

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

1 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 294点赞 593526浏览

随机文章
SpringCloud—OpenFeign(一)声明式服务调用
5年前
MyBatis笔记7——typeAliases
5年前
Nginx—安装运行Lua脚本
3年前
Spring—ApplicationEvent事件驱动机制
2年前
Kotlin—String的常用方法
4年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1927 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 593526 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付