ironknt-uniapp-graphql

my uniapp graphql request tool

Usage no npm install needed!

<script type="module">
  import ironkntUniappGraphql from 'https://cdn.skypack.dev/ironknt-uniapp-graphql';
</script>

README

配置config.js

import generateRequest from 'ironknt-uniapp-graphql'

const Fly = require('flyio/dist/npm/wx');

const fly = new Fly();

// 设置超时
fly.config.timeout = 12000;

// api基地址
import config from '../apiConfig'

const { loginUrl } = config;

// 自动检查storage数据以及自动将数据附加到请求头
const checkList = {
  // 失败提醒和失败跳转页
  token: {
    errorHint: '未登陆,请先登陆',
    errorTo: '/pages/login/index'
  },
  user: {
    errorHint: '未登陆,请先登陆',
    errorTo: '/pages/login/index'
  },
  // 需要特殊处理的字段,传入一个resolve
  obj: {
    errorHint: '未登陆,请先登陆',
    errorTo: '/pages/login/index',
    resolve: res => {
      if (!res || typeof res !== 'string') return '';
      const tmp = JSON.parse(res);
      return tmp.value;
    }
  },
  // 不需要从storage读取的字段,设置value即可
  text: {
    errorHint: '未登陆,请先登陆',
    errorTo: '/pages/login/index',
    value: '',
  },
  // 有些时候请求头字段为other,但是读取storage
  // 为otherKey,设置key字段即可
  other: {
    key: 'otherKey',
    errorHint: '未登陆,请先登陆',
    errorTo: '/pages/login/index',
    value: '',
  }
}

// checkList 检查请求头,loginPath 登陆页
export const request = generateRequest(fly, loginUrl, checkList, loginPath='/pages/login/index');

export default request;

具体请求

import request from './config';

// graphql请求
// 第一个参数为payload,第二个dataPath,第三个请求子路径,第四个失败后显示信息(后台返回错误信息优先级更高)
// 后二者默认为空
export function login (params) {
    return request({
        operationName: 'login',
        query: `mutation login($username: String!, $password: String!) {
            login(username: $username, password: $password) {
                token
            }
        }`,
        variables: {
            ...params
        }
    }, 'login', '', '登陆失败');
}

// 非graphql请求,格式为:await request({ ...data }, '', '/login');
// 非graphql请求,仅支持post
// 第三个参数传递子路径
export function login2 (params) {
    return request({
    ...params,
    }, '', '/login/');
}