配置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/');
}