|
uniapp官网对发起网络请求使用了uni.request,但是我比较习惯用axios,主要是香,接下来总结下我的个人经验
在项目根目录新建一个utils目录,再新建一个request.js文件,把下面的代码放进去
- import Vue from 'vue'
- import axios from 'axios'
- let baseURL = 'https://test/' //测试环境的域名,上线的时候这里缓存线上的接口域名就OK
- const instance = axios.create({
- baseURL,
- timeout : 6000
- })
- // 请求拦截
- instance.interceptors.request.use(
- config => {
- return config
- },
- error => {
- return Promise.reject( error );
- }
- );
- // 响应拦截
- instance.interceptors.response.use( res => {
- if ( res.status == 200 ){
- return res;
- } else {
- return Promise.reject( res.data.msg );
- }
- });
- // 自定义适配器 , 适配uniapp语法
- axios.defaults.adapter = function( config ) {
- return new Promise( ( resolve , reject ) => {
- let settle = require('axios/lib/core/settle');
- let buildURL = require('axios/lib/helpers/buildURL');
- uni.request({
- method : config.method.toUpperCase(),
- url : config.baseURL + buildURL( config.url , config.params , config.paramsSerializer ),
- header : config.headers,
- data : config.data,
- dataType : config.dataType,
- responseType : config.responseType,
- sslVerify : config.sslVerify,
- complete : function complete( response ) {
- response = {
- data : response.data,
- status : response.statusCode,
- errMsg : response.errMsg,
- header : response.header,
- config : config
- };
- settle( resolve , reject , response );
- },
- });
- })
- }
- export default instance
复制代码 这个是针对axios的二次封装,uniapp并没有自带axios,所以使用之前需先安装下axios插件,可通过执行代码 npm install axios --save
大家都知道网络请求一般都是get或者post,所以接下来还需要封装下每一个接口的请求,看下面
我们可以在根目录创建一个api目录,然后新建api.js
把上面创建的request.js引入进来
- import request from "@/utils/request";
- //根据区域获取相关数据
- export function testList(data) {
- return request({
- url: "test/testList",
- method: "post",
- data
- });
- }
复制代码 使用方式
在使用到的页面中直接import
import {testList} from "@/api/api";
搞定,封装结束~手码不易,欢迎大家评论区交流
|
|