在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口,如何定义呢?

本文使用vue-cli生成的项目举例。

第一步.在src目录下新建一个文件夹http,在http目录下建文件夹moudules,后台提供的所有接口都在这里定义.

第二步.在moudules目录下划分模块新建js文件,比如:

a.会员中心模块: member.js

b.登录注册模块: login.js

c.合伙人模块: partner.js

目录大概是这个样子:

 第三步,需要引入axios做相应的配置。

1.首先安装axios

npm install axios

2.在http目录下新建axios.js:

/* jshint esversion: 6 */

import axios from 'axios';
import Cookies from "js-cookie";
import config from './config';
import router from '@/router';
import { Toast} from 'vant'; export default function $axios(options) {
return new Promise((resolve, reject) => {
const instance = axios.create({
baseURL: config.baseUrl,
headers: config.headers,
timeout: config.timeout,
withCredentials: config.withCredentials,
}); // request 拦截器
instance.interceptors.request.use(
config => {
//在发送之前做点什么
let auth_token = Cookies.get('auth_token');
if (auth_token) {
config.headers.auth_token = auth_token;
} else {
let loginpage = Cookies.get('loginpage');
if (loginpage) {
router.push('/login');
}
}
if (config.method === 'post') {}
return config;
},
error => {
// 判断请求超时
if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
Toast("信号不好,请求超时")
}
} ); // response 拦截器
instance.interceptors.response.use(
response => {
//对响应数据做点什么
let data;
if (response.data == undefined) {
data = JSON.parse(response.request.responseText);
} else {
data = response.data;
}
return data;
},
err => {
if (err && err.response) {
console.log(err)
}// 返回接口返回的错误信息
return Promise.reject(err);
}
); // 请求处理
instance(options).then(res => {
resolve(res);
return false;
}).catch(error => {
reject(error);
});
});
}

3.在http目录下新建config.js:

export default {
method: 'get',
// 基础url前缀
baseUrl: baseUrl,//请求的域名地址
// 请求头信息
headers: {
'Content-Type': 'application/json;charset=UTF-8'
},
// 参数
data: {},
// 设置超时时间
timeout: 10000,
// 携带凭证
withCredentials: false,
// 返回数据类型
responseType: 'json'
}

第四步,在http下面的js文件中引入api.js导出的函数,拿其中一个文件login.js说明:

1.api.js:

 /* jshint esversion: 6 */

import * as login from './moudules/login';
// 默认导出
export default {
login,
}

2.login.js

import axios from '../axios'

/*
* 系统登录模块
*/ // 登录
export const login = (data) => {
return axios({
url: '/app/api/v1/user/phonelogin',
method: 'post',
data
});
};

第五步:将api挂载在 Vue 原型的 $api 对象上

1.在http文件下新建index.js文件:

import api from './api';

const install = Vue => {
if (install.installed)
return;
install.installed = true;
Object.defineProperties(Vue.prototype, {
// 注意,此处挂载在 Vue 原型的 $api 对象上
$api: {
get() {
return api
}
}
});
}; export default install

2.在项目的main.js文件下导入api:

import api from './http';

Vue.use(api);

第六步步,在组件中使用接口,比如在登陆页面中使用login的接口:

        let loginInfo = {
phone: this.field.phone,
code: this.field.sms,
cityname: this.field.city
};
this.$api.login.login(loginInfo).then(res => {
if (res.ret == 0) {
Cookies.set("auth_token", res.data.authToken);
this.$toast.success({message:"登录成功",duration:2000});
setTimeout(() => {
this.loading = false;
this.$router.go(-1);
}, 2000);
}
})

最终http目录为:

以上方法定义接口虽然看起来麻烦点,但有却有其好处:

  • 代码看起来规范,所有的接口都在一个文件夹定义,不用分散的各个组件,方便维护管理。

  • 可以做到接口一次定义,多处使用。

Vue.js 项目接口管理的更多相关文章

  1. 【vue】---项目接口管理---【巷子】

    一.前言 在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口 假设后端的文档分成了以下几个模块 1.发现模块 2.个人信息模块 3.商品模块 4.评论模块 ...... ...

  2. vue项目接口管理,所有接口都在apis文件夹中统一管理

    参考:https://www.codercto.com/a/53432.html 在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口,如何定义呢? 方法可能不只一种,本文 ...

  3. vue.js项目构建

    这里构建的vue.js项目依赖node服务器运行. 项目搭建完整步骤: 安装node.js ,转至nodeJs网站http://nodejs.cn/ 下载nodeJs进行安装. 安装完毕检查nodeJ ...

  4. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  5. Vue.js项目的开发环境搭建与运行

    写作背景:手上入一个用Vue框架写的微信公众号项目,根据公司安排,我负责项目源代码的验收工作(当然专业的工作检测会交给web开发人员,我只是想运行起来看一看). 1 开发环境安装步骤: (一)安装no ...

  6. Vuejs实例-01使用vue-cli脚手架搭建Vue.js项目

    [TOC] 1. 前言 vue-cli 一个简单的构建Vue.js项目的命令行界面 整体过程: $ npm install -g vue-cli $ vue init webpack vue-admi ...

  7. vue.js项目安装

    Vue.js 安装 NPM 方法安装vue.js项目 npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v 2.3.0 #升级 npm npm install np ...

  8. vscode下面开发vue.js项目

    vscode下面开发vue.js项目   https://blog.csdn.net/linzhiqiang0316/article/details/79176651 vscode下面开发vue.js ...

  9. 建立多页面vue.js项目

    介绍 根据需求,我们希望建立一个多页面的vue.js项目,如何改造单页面vue.js项目为多页面项目?跟着我的步伐看下去吧. 1.创建单页面vue.js项目 简单的记录一下创建步骤: --安装cnpm ...

随机推荐

  1. (十二)python3 迭代器

    可以直接作用于 for 循环的对象统称为可迭代对象: Iterable .一类是集合数据类型,如 list . tuple . dict . set . str 等,一类是 generator ,包括 ...

  2. Spider-Python爬虫之XPath 教程

    原文链接:https://www.runoob.com/xpath/xpath-syntax.html XPath 术语 XPath 节点 七种类型:在 XPath 中,有七种类型的节点:元素.属性. ...

  3. 一个关于vue+mysql+express的全栈项目(一)

    最近学了mysql数据库,寻思着能不能构思一个小的全栈项目,思来想去,于是就有了下面的项目: 先上几张效果图吧       目前暂时前端只有这几个页面,后端开发方面,有登录,注册,完善用户信息,获取用 ...

  4. 关于c# .net爬虫

    刚开始听到爬虫这两个字眼的时候感觉挺稀奇的,之前并没有接触过爬虫,正好这会手上没事,于是便百度了一下. 1.网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...

  5. STM32F407 跑马灯 库函数版 个人笔记

    原理图: MCU在开发板原理图的第二页,LED在开发板原理图的第三页 由图可知,PF9 ,PF10 若输出低电平则灯亮,高电平则灯灭 选推挽输出 代码步骤 使能IO口时钟. 调用函数RCC_AHB1P ...

  6. Linux rz的使用

    RZ是Linux提供的上传的命令,基于XMODEM/YMODEM/ZMODEM协议. 让我们来测试一下参数吧: 先准备一个文件,就叫test.txt吧,内容如下: one line rz -+  如果 ...

  7. 3.2 符号表之二叉查找树BST

    一.插入和查找 1.二叉查找树(Binary Search Tree)是一棵二叉树,并且每个结点都含有一个Comparable的键,保证每个结点的键都大于其左子树中任意结点的键而小于其右子树的任意结点 ...

  8. Count Color POJ - 2777 线段树

    Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds ...

  9. UVA 10603_Fill

    题意: 给定三个杯子容量,初始只有第三个杯子满,其余为空,求最少需要倒多少水才能让某一杯子中有d升水,如果不能达到,则小于d且尽量接近. 分析: 因为要求转移水量最少,所以采用优先级队列保存每次的状态 ...

  10. Ubuntu 16.04安装SoapUI工具进行接口测试(Web Service/WSDL/RESTfull)

    SoapUI是一个跨平台接口测试工具,官方提供开源版本和商业版本.可以用来测试WSDL/RESTfull等接口. 替代的工具有JMeter. 一般用于WSDL的接口测试比较多,基于XML的形式,且这类 ...