美文网首页前端开发那些事儿
vue,react,axios接口再封装

vue,react,axios接口再封装

作者: andcen | 来源:发表于2020-07-17 18:32 被阅读0次

最近想看一点react,看到接口封装的时候找到的资料都挺凌乱的,所以自己写一个吧。本来是写的vue的,但是找react的没找到合适的,想着反正都是JavaScript,估计都是一样的。结果套过来以后直接确实能用。。。。

安装

这个就不用多说了吧

$ npm install axios

建立文件结构

在src下建立api文件夹 分别建立四个js文件

request.js //(主要是数据放请求拦截的公共方法)
constent.js //(主要用于api地址的统一管理)
mainApi.js //(存放接口api具体的内容,如果接口很多,那么可以按类型,模块命名以后分不同的js来存放、譬如,login.js,home.js,author.js等等,这样比较清晰)
address.js  //(主要是用于环境的地址的设置,如果没什么操作也可以放在constent.js里面。看着更加清晰方便。)
request.js
import axios from 'axios'
// import qs from 'qs'
// 创建axios实例
const service = axios.create({
  timeout: 60 * 1000 // 请求超时时间
})
// 添加请求拦截器)
service.interceptors.request.use(
  config => {
    // 给请求加上请求头
    if(sessionStorage.token && sessionStorage.token !== 'undefined') {
      config.headers.Authorization = sessionStorage.token
    }
    // 在发送请求之前做某件事,譬如这里可以把参数序列化
    // if (config.method === 'post') {
    //   config.data = qs.stringify(config.data);
    // }
    return config
  },
  error => {
    console.log('错误的传参')
    // Do something with request error
    return Promise.reject(error)
  }
)
// respone拦截器,返回状态判断(添加响应拦截器)
service.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    if (error.response.status === 504 || error.response.status === 404) {
       console.log("服务器失去响应!");
    } else if (error.response.status === 401) {
       console.log("登录信息已经失效!");
    } else if (error.response.status === 500) {
       console.log("服务器不可用!");
    }
    return Promise.reject(error)
  }
)
export default service
constant.js
import ApiUrl from './address' // 这个是接口信息如果不是太多可以去掉address这js直接写接口信息
// const ApiUrl = 'xxxxxxxxxx'  可以直接写接口地址
// process.env.NODE_ENV 可以利用判断当前环境
/**
*如果不同的环境用不停的接口,当然这个如果写了address .js那写在那个里面也行
if(process.env.NODE_ENV ==='XXXXXXXXX'){
 const ApiUrl = 'aaaaaaaaaaa' 
}else{
  const ApiUrl = 'bbbbbbbbbbbb' 
}
*/
// 接口集合
export default {
  // 登录
  getLogin : `${ApiUrl}/user/login`,
}
mainApi.js
// 引用api公共地址
import constant from './constent'
// 引用接口公共方法
import request from './request'
// 注意两个请求的数据传输方式,看是data,还是params,还是怎么样的
// 登录 post 请求 
export function getLogin(paramsData) {
    return request({
        url: constant.getLogin,// 从公共的constent.js里面获取
        method: 'post',
        data: paramsData
    })
}
// 登录 get 请求
export function getLogin(params) {
    return request({
        url: constant.getLogin,// 从公共的constent.js里面获取
        method: 'get',
        params: params
    })
}
address.js (BTW:这个是看的网上的,我一般把这个直接写在constent的上面,但是看着这样写结构好像更加清晰)
// 获取当前的URL中的地址,同时携带端口号,不携带http://
let projectAddrass = window.location.host;
// 返回当前的URL协议,既http协议还是https协议
let protocol = document.location.protocol;
// 封装请求接口的地址,如果服务器中套了一层性项目名称,需要在这里面添加上,需要留意,例如: /zzxl/
const interfaceIp = `${protocol}//${projectAddrass}/api`;
// 对外提供的服务地址(为了分环境准备)
const ApiUrl = process.env.NODE_ENV === 'development' ? 'http://xxxxxxxxxxx/api' : interfaceIp;
// 
export default ApiUrl

页面上的用法(写就写全吧),至于为什么写两个,因为我发现react里面@路径不好使

vue里面

// 引用
import {getLogin} from "@/api/mainApi";
// 使用
const formData = {xxxxxx}
getLogin(formData).then(res=>{
  console.log(res)
})

react里面 (我刚刚看了一下react的菜鸡,写的不对的不要喷我,但是我确实用vue的这个在react里面写出来了)

// 引用
import {getLogin} from '../../api/mainApi'
// 使用
const paramsData = {xxxxxxxx}
getLogin(paramsData).then(res=>{
 console.log(res)
})

相关文章

  • vue,react,axios接口再封装

    最近想看一点react,看到接口封装的时候找到的资料都挺凌乱的,所以自己写一个吧。本来是写的vue的,但是找rea...

  • (二)axios的封装

    axios封装代码 在vue和react的开发过程中,经常需要对axios进行封装,现将项目中的axios保留,以...

  • 基于axios的二次封装

    1、 axios的封装前言 axios是一个基于 promise 的 HTTP 库,目前,在vue,react框架...

  • vue中axios封装和api接口管理

    vue中Axios的封装和API接口的管理 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是...

  • 2020-04-07vue中Axios的封装和API接口的管理

    vue中Axios的封装和API接口的管理 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是...

  • vue中axios封装和api接口管理

    vue中Axios的封装和API接口的管理 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是...

  • axios封装

    index.js------axios封装 api.js------接口文件 单页面引入---login.vue ...

  • vue axios 接口封装

    准备工作 vue-cli 创建一个新项目 vue-cli axios中文说明文档 1.安装axios npm in...

  • 2022-04-15 Vue

    Vue 中 Axios 的封装和 API 接口的管理 [https://www.cnblogs.com/hhj-b...

  • vue项目后台接口管理

    前言 上篇文章axios二次封装及API接口统一管理讲到了vue项目中的axios请求api统一的封装,但是api...

网友评论

    本文标题:vue,react,axios接口再封装

    本文链接:https://www.haomeiwen.com/subject/thcnhktx.html