vue 项目接口管理

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

方法可能不只一种,本文使用axios+async/await进行接口的统一管理。

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

举例

拿segmentfault的官网简单举个例子,先看一下官网:

看下网站,脑补一下后台给出的文档,如果后台不傻的话给出的文档肯定分模块的,假设后台给出的文档分为了以下几个模块(假设的,不要较真哈):

  • 资讯模块 (我的订阅、热门资讯)
  • 问答模块
  • 专栏模块
  • 讲堂模块
  • 圈子模块
  • 发现模块
  • 个人信息模块
  • 用户登录注册模块
  • ...还有其他很多

一般来说,网站的首页都是复杂的,会用到很多其他页面也会用到api,所以接口统一管理可以做到api的复用:

那么如何做呢?

动手

1

首先,在src目录下新建一个文件夹,我这里叫apis,后台提供的所有接口都在这里定义:

  1. cd src  #切换到src目录
  2. mkdir apis  #新建apis文件
2

第二步,按照后台文档划分的模块新建js文件,这里简单举个例子:

  • 资讯模块: info.js
  • 登录注册模块: member.js
  • 个人信息模块 user_info.js
  • ....
  1. cd apis #切换到apis目录
  2. touch info.js member.js user_info.js #新建js文件

现在的目录大概是这个样子:

src

   apis

       info.js

       member.js

       user_info.js

   main.js
3

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

在apis下新建一个文件夹,叫http.js,在里面做axios相应的配置。

touch http.js //新建http.js文件

配置如下:

import axios from ‘axios‘

//创建axios的一个实例

var instance = axios.create({

   baseURL:xxx,

   timeout: 6000

})

//------------------- 一、请求拦截器 忽略

instance.interceptors.request.use(function (config) {

   return config;

}, function (error) {

   // 对请求错误做些什么

   return Promise.reject(error);

});

//----------------- 二、响应拦截器 忽略

instance.interceptors.response.use(function (response) {

   return response.data;

}, function (error) {

   // 对响应错误做点什么

   return Promise.reject(error);

});

export default function (method, url, data = null) {

   method = method.toLowerCase();

   if (method == ‘post‘) {

       return instance.post(url, data)

   } else if (method == ‘get‘) {

       return instance.get(url, { params: data })

   } else if (method == ‘delete‘) {

       return instance.delete(url, { params: data })

   }else if(method == ‘put‘){

       return instance.put(url,data)

   }else{

       console.error(‘未知的method‘+method)

       return false

   }

}

配置简要说明一下:

  • 引入axios,新建了个axios的实例(axios的实例的axios的功能一样)。
  • 请求拦截器响应拦截器不是本文重点,略过。
  • 第30行代码及以后是重点,拉出来重点看一下。
  • /**
    
    * 使用es6的export default导出了一个函数,导出的函数代替axios去帮我们请求数据,
    
    * 函数的参数及返回值如下:
    
    * @param {String} method  请求的方法:get、post、delete、put
    
    * @param {String} url     请求的url:
    
    * @param {Object} data    请求的参数
    
    * @returns {Promise}     返回一个promise对象,其实就相当于axios请求数据的返回值
    
    */
    
    export default function (method, url, data = null) {
    
       method = method.toLowerCase();
    
       if (method == ‘post‘) {
    
           return instance.post(url, data)
    
       } else if (method == ‘get‘) {
    
           return instance.get(url, { params: data })
    
       } else if (method == ‘delete‘) {
    
           return instance.delete(url, { params: data })
    
       }else if(method == ‘put‘){
    
           return instance.put(url,data)
    
       }else{
    
           console.error(‘未知的method‘+method)
    
           return false
    
       }
    
    }
4

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

//member.js 用于定义用户的登录、注册、注销等

import req from ‘./http.js‘

//定义接口  

//在这里定义了一个登陆的接口,把登陆的接口暴露出去给组件使用

export const LOGIN =params=>req(‘post‘,‘/operator/login‘,params)

//这里使用了箭头函数,转换一下写法:

//export const LOGIN=function(req){

//    return req(‘post‘,‘/operator/login‘,params)

//}

//定义注册接口

export const REG =params=>req(‘post‘,‘/operator/reg‘,params)

//定义注销接口

export const LOGOUT =params=>req(‘post‘,‘/operator/logout‘,params)
5.

第五步,在组件中使用接口。

登陆组件 Login.js使用登录接口:

//Login.vue

<template>

   <div>

       <input type=‘text‘ v-model=‘user.userId‘>

       <input type=‘text‘ v-model=‘user.pass‘>

   </div>

</template>

<script>

   //1. 引入登录的接口定义

   import {LOGIN} from ‘../../apis/user.js‘

   export default{

       data(){

           return {

               user:{

                   userId:‘‘,

                   pass:‘‘

               }

           }

       },

       methods{

       //2. 定义登录的逻辑

       async login(){

           //2.1 awiat LOGIN(this.user)

             //等待LOGIN(this.user)执行完,

             //把返回值给user_info

           let user_info=await LOGIN(this.user)

           //2.2假设登录成功,返回的数据应该是

               //user_info={code:200,msg:‘success‘,data:{token:‘xxxxx‘}}

               //然后根据返回的数据做相应的处理,比如储存token

       }

       },

       mounted(){

           //3. 执行登录

           this.login()

       }

   }

</script>
6

这样定义接口虽然看起来麻烦点,但有以下几个好处:

  • 代码看起来规范,所有的接口都在一个文件夹定义,不用分散的各个组件,维护起来简单,例如后台的一些url变了,改起来也方便。
  • 可以做到接口一次定义,到处使用。

例如首页使用了很多api:

//index.js  首页的js文件

import {GET_USER_INFO} from ‘apis/user_info.js‘  //用户信息

import {GET_CURRENT_INFO,GET_HOT_INFO} from ‘apis/info.js‘ //热门资讯 最新资讯

import {GET_HOT_LECTRUE} from‘apis/lectrue.js‘ //讲座推荐

用户界面也会用到用户信息api:

//user_info.js用户信息页面

import {GET_USER_INFO} from ‘apis/user_info.js‘  //用户信息

来源:作者:hyangteng

https://segmentfault.com/a/1190000017925880

原文地址:https://www.cnblogs.com/smuwgeg/p/10417115.html

时间: 2024-11-11 19:31:20

vue 项目接口管理的相关文章

part11 Vue项目接口联调

何为项目接口联调? 前端代码编译好了  后端接口写好了 我们就需要去掉前端模拟数据干掉 用后端提供的数据.进行前后端的一个调试 如何联调? //想要手机通过ip地址链接我们的网站 我们前端的项目是通过 webpack-dev-server启动的 默认不支持通过ip访问 我们打开packge.json dev: --host 0.0.0.0 原文地址:https://www.cnblogs.com/-constructor/p/12324696.html

Vue.js 项目接口管理

在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口,如何定义呢? 本文使用vue-cli生成的项目举例. 第一步.在src目录下新建一个文件夹http,在http目录下建文件夹moudules,后台提供的所有接口都在这里定义. 第二步.在moudules目录下划分模块新建js文件,比如: a.会员中心模块: member.js b.登录注册模块: login.js c.合伙人模块: partner.js 目录大概是这个样子:  第三步,需要引入axios做相应的配置

vue项目axios请求接口,后端代理请求接口404,问题出现在哪?

在vue项目中,列表数据需要用到qq音乐接口中的数据,但是直接请求不行,有host及referer限制,需要采用后端代理的方式.借助axios及node的express,在dev-server.js中实现后,重启项目,结果接口404了.代码如下: 仔细检查后,代码没问题:于是在apiRouts中console.log()打印信息,运行没有打印信息,意味着根本没有运行这部分代码.于是想到会不会是webpack版本更新,配置发生了改变导致的.所以仔细看了配置后,发现webpack.dev.conf.

vue项目搭建 (一)

vue项目搭建 (一) 由于一直想要有自己的框架,因而一直在尝试搭建各类结构,结合vue官网及git上大神bailicangdu的项目,再看看网上一些意见,及个人思考,总结的一些,不到之处希望大家可以帮我指证,必定虚心接受 技术栈: vue2+vue-router+vuex+axios+webpack+es6/7 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── apsi | | ├── api

vue项目部署上线

前言 今天把自己写的demo登录写完了,就想着试着走一下部署上线的流程.参考了很多的文档,终于成功进行了部署.在这里将服务器的搭建和vue项目的 部署上线进行整理(都是基础的知识,希望对大家有帮助.对我帮助是很大的) 2.流程 1.服务器搭建 这里我用的是腾讯云的服务器.买了一个域名.没有备案的域名也可以使用.买完服务器进行域名解析. 点击添加解析,按照下面这样填写就行 马赛克是你的外网ip 可以根据你需要的进行修改,我这只是最基本的绑定.其他请自行百度. 3.添加ssh密钥 第一步添加密钥,会

利用vue-cli3快速搭建vue项目详细过程

一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue serve .vue ui 等命令) CLI 服务:@vue/cli-service是一个开发环境依赖.构建于 webpack 和 webpack-dev-server 之上(提供 如:serve.build 和 inspect 命令) CLI 插件:给Vue 项目提供可选功能的 npm 包 (如

【Spring Boot】利用 Spring Boot Admin 进行项目监控管理

利用 Spring Boot Admin 进行项目监控管理 一.Spring Boot Admin 是什么 Spring Boot Admin (SBA) 是一个社区开源项目,用于管理和监视 Spring Boot 应用程序.应用程序通过 http 的方式注册到 Spring Boot 管理客户端,或者通过 Spring Cloud 的服务发现机制,然后针对 actuator 接口将数据通过 Vue.js 进行可视化管理. 对于我们来说,我们可以通过 Spring Boot Admin 浏览所有

2019-10-1 Vue项目开始

npm i 把所有依赖包都装上 要知道webpack搭建的项目目录 要知道如何获取代码段,从 MUI Mint-UI  加到自己Vue项目中 项目环境搭建好了,然后公共的部分也做了一些 然后呢!如何管理我们的代码 然后在这个项目中好像是要放到码云中去的 如何使用 1.我们创建一个项目忽略文件直接.gitignore 像node_modules这个文件不需要上传到git的 .idea  这个是webstorm的 2.readme.md 文件 项目的一些详细信息的 3.开源项目添加LICENSE文件

Vue CLI 3.x搭建Vue项目

一.Node安装 windows 1. Node.js (>=8.9, 推荐8.11.0+) Node官网下载 .msi 文件,按步骤下载安装即可. 安装完之后在cmd中输入 node -v,若显示版本号,则说明安装成功. 2. Git(命令行终端) Git官网下载安装即可. Linux apt-get install nodejs node -v apt-get install npm npm -v npm命令1.得到原本的镜像地址 npm get registry 2.设置成淘宝 npm c