@qiejs/ajax
TypeScript icon, indicating that this package has built-in type declarations

0.0.52 • Public • Published

qie-ajax

对 Axios 进行一定的封装,用于简化接口定义与调用方式

安装

npm install @qiejs/ajax

初始化

// ajax.js

import Ajax from "@qiejs/ajax";
import axios from "axios";

axios.defaults.timeout = 60 * 1000;
axios.defaults.baseURL = "https://api.example.com";

// ----------------- 拦截器
// 添加请求拦截器
axios.interceptors.request.use(
  function(config) {
    // 在发送请求之前做些什么
    return config;
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做点什么
    return response;
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

const createAjax = new Ajax({
  axios: axios,
  // post请求的数据类型
  dataType: "json",
  // 根据不同框架来显示和隐藏 Loading
  loading: {
    show: () => {
      Toast.loading();
    },
    hide: () => {
      Toast.clear();
    }
  },
  // 统一的异常处理
  catch: err => {
    alert(err.message);
  }
});

export default createAjax;

定义 API

// api.js
import createAjax from "./ajax";

const apis = {
  login: "post /login",
  getUser: id => `get /user/${id}`
};

export default createAjax(apis, "/api");

使用

import api from './api'

api.login({
  data: {userName: 'jack', passwrod: '12111' }
  loading: true
}).then(res => {
  console.log(res)
})

api.getUser(userId)({
  data:{ a: 1},
  loading: true,
  catchError: false,
}).then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})

Readme

Keywords

Package Sidebar

Install

npm i @qiejs/ajax

Weekly Downloads

3

Version

0.0.52

License

MIT

Unpacked Size

9.51 kB

Total Files

5

Last publish

Collaborators

  • ntpush
  • iter