zoukankan      html  css  js  c++  java
  • React + axios 使用

    1. 简单封装使用

    创建一个request组件来定义全局url

      import axios from 'axios';
    
      export const newVar = axios.create({
          baseURL:"http://127.0.0.1:8080",
          timeout: 5000
      })
    
    • 切记这里要将newVar抛出, 否则获取不到

    在使用的地方直接调用

      newVar({
                url:"/api/public/apk",
                method:"GET",
                // headers: {
                //     "Content-Type": "application/json"
                // },
                params:{"a":"hello"}
            }).then(res=>{
                console.log(res.data)
            }).catch(err=>{
                console.log(err)
            })
    
    • 在这里url会自动拼接上全局url
    • 写的参数会自己带到axios对象中

    2. 将各个api请求进行封装,方便后期维护

    使用.post 这类封装

    封装

      export function getAPK(data){
          return newVar.post('/index', data.data, { params:{"a":"b"}, headers: {'token': 'application/x-www-form-urlencoded'}})
    }
    
    • 这里{ params:{"a":"b"}, headers: {'token': 'application/x-www-form-urlencoded'}}, 只是说明配置参数如何传递,没有实际意义

    调用

      getAPK({
                data:{"a":"index"}
            }).then(res=>{
                console.log(res)
            }).catch(err=>{
                console.log(err)
            })
    
    使用axios对象封装
    export function getAPK(data){
        console.log("data", data)
        return newVar({
            url: "/index",
            method:"POST",
            data:data.data,
            headers: {"token": "token"}
        })
    }
    

    注意: 在这里数据使用 data.data 进行传递,如果直接写data, 后台会接受到{"data": {}} 这样格式的内容, 多嵌套了一层

    3.你也可以添加请求拦截器

    http://www.axios-js.com/zh-cn/docs/#拦截器

    4.配置代理后不用指明, 请求的baseUrl

  • 相关阅读:
    拷贝构造函数与赋值运算符的区别(待完善)
    概念学习(Concept Learning)
    函数对象适配器之ptr_fun的使用示例
    SynchronizationContext的研究之一(非WPF及Forms)
    ESLint
    Vue CLI 4.0 关于 webpack 基本配置范例
    Hdu3787
    Cf393A
    Cf387A
    Cf386B
  • 原文地址:https://www.cnblogs.com/ShanCe/p/14429218.html
Copyright © 2011-2022 走看看