上篇简单写了一下mpvue+router+ui库的配置,这篇接着写接口请求flyiovue
Fly.js一个支持全部JavaScript运行环境的基于Promise的、支持请求转发、强大的http请求库。可让您在多个端上尽量大限度的实现代码复用。git
浏览器支持github
Chrome | Firefox | Safari | Opera | Edge | IE |
---|---|---|---|---|---|
✔ | ✔ | ✔ | ✔ | ✔ | > 8 |
目前Fly.js支持的平台包括:Node.js 、微信小程序 、Weex 、React Native 、Quick App 和浏览器,这些平台的 JavaScript 运行时都是不一样的。更多的平台正在持续添加中,请保持关注。vuex
Fly.js 是一个基于 promise 的,轻量且强大的Javascript http 网络库,它有以下特色:npm
Flyio帮助文档 Fly.js,具体的能够查看文档小程序
npm install flyio -S
复制代码
在src目录下建立一个api文件夹,新建一个apiconfig.js用来写fly的基础配置微信小程序
const Fly = require('flyio/dist/npm/wx')
const fly = new Fly()
复制代码
官方文档写的是new Fly,因为我用了eslint,这样会提示错误,因此这样写,其实意思是同样的api
// 定义公共headers
fly.config.headers={token: test_token}
// //设置超时
// fly.config.timeout=10000;
// //设置请求基地址
// fly.config.baseURL = 'http://180.76.246.122/api/'
fly.config.baseURL = 'https://api.xxxx.com/api/'
复制代码
请求拦截器promise
// 添加请求拦截器
fly.interceptors.request.use(config => {
let token = store.state.user.token
console.log(token)
// 给全部请求添加自定义header
config.headers['token'] = token
config.body = qs.stringify(config.body)
// 能够显式返回request, 也能够不返回,没有返回值时拦截器中默认返回request
return config
}, error => {
Promise.reject(error)
})
复制代码
响应拦截器浏览器
fly.interceptors.response.use(
(response) => {
// 赞成处理一些响应的code状态
// do sthing
// 只将请求结果的data字段返回
return response.data
},
(err) => {
// 发生网络错误后会走到这里
console.log(err)
// return Promise.resolve(err)
}
)
复制代码
我这边是作了一个公共的处理,apiconfig处理好了以后,export 出去实例化的fly,例如我在userApi.js里使用
import fly from './apiconfig'
// 根据code登陆获取token
export function loginByCode (data) {
return fly.request(
'User/LoginByCode',
data,
{method: 'post'}
)
}
export function getUserInfo () {
return fly.request(
'User/GetUserInfo',
null,
{method: 'get'}
)
}
复制代码
这里列出了post,和get,固然也能够直接写,具体更多使用看使用手册
fly.get('url', {id: 1}).then()
fly.post('url', {id: 1}).then()
复制代码
fly请求参数顺序是固定的,由于它不是做为一个object传过去的。 写好以后,在页面里直接使用就行
引入文件
import {loginByCode} from '@/api/userApi'
复制代码
loginByCode(params).then(res => {
console.log(res)
})
复制代码
——————————————————————————————————————
emm...大体就是这样了,拖拖拉拉隔了这么久才写完。。。最近实在太忙了