vue实现的请求服务器端API接口示例


Posted in Javascript onMay 25, 2019

本文实例讲述了vue实现的请求服务器端API接口。分享给大家供大家参考,具体如下:

import axios from 'axios'
import router from '@/router'
axios.defaults.timeout = 3000
axios.defaults.baseURL = ''
axios.interceptors.request.use(
 config => {
  // const token = getCookie('名称')
  config.data = config.data
  config.headers = {
   'Content-Type': 'application/json; charset=utf-8'
  }
  if (config.url === '/api/login/index') {
  } else {
   if (localStorage.getItem('Authorization')) {
    config.headers.Authorizatior = localStorage.getItem('Authorization')
   }
  }
  // if (token) {
  // config.params = {'token': token}
  // }
  return config
 },
 error => {
  return Promise.reject(error)
 }
)
axios.interceptors.response.use(
 response => {
  //返回错误跳转到首页
  if (response.data.code === 0) {
   router.push({
    path: '/',
    querry: {
     redirect: router.currentRoute.fullPath
    }
   })
  }
  return response
 },
 error => {
  if (error.response) {
   switch (error.response.status) {
    case 401:
     localStorage.removeItem('Authorization')
     router.push('/login')
   }
  }
  return Promise.reject(error)
 }
)
/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */
export function fetch (url, params = {}) {
 return new Promise((resolve, reject) => {
  axios.get(url, {
   params: params
  })
  .then(response => {
   resolve(response.data)
  })
  .catch(err => {
   reject(err)
  })
 })
}
/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function post (url, data = {}) {
 return new Promise((resolve, reject) => {
  axios.post(url, data)
  .then(response => {
   resolve(response.data)
  }, err => {
   reject(err)
  })
 })
}
/**
 * 封装patch请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function patch (url, data = {}) {
 return new Promise((resolve, reject) => {
  axios.patch(url, data)
   .then(response => {
    resolve(response.data)
   }, err => {
    reject(err)
   })
 })
}
/**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function put (url, data = {}) {
 return new Promise((resolve, reject) => {
  axios.put(url, data)
   .then(response => {
    resolve(response.data)
   }, err => {
    reject(err)
   })
 })
}

main.js调用

import { fetch, post, patch, put } from '@/util/fetch'
Vue.prototype.get = fetch
Vue.prototype.post = post
Vue.prototype.patch = patch
Vue.prototype.put = put

视图页面使用 

export default {
 name: 'login',
 data () {
  return {
   mobile: '',
   password: ''
  }
 },
 components: {
  XInput,
  XButton,
  Group,
  Box
 },
 methods: {
  handleLogin () {
   let params = {}
   params.username = this.mobile
   params.password = this.password
   this.post('/api/driver/index', params).then((data) => {
    console.log(data)
   }).catch((error) => {
    console.log(error)
   })
  }
 }
}

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 事件属性绑定带参数的函数
Mar 13 Javascript
jQuery基础知识小结
Dec 22 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
BootStrap使用file-input插件上传图片的方法
Sep 05 Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 Javascript
Bootstrap table使用方法记录
Aug 23 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
Postman模拟发送带token的请求方法
Mar 31 Javascript
Vue开发实现吸顶效果的示例代码
Aug 21 Javascript
JavaScript实现移动端弹窗后禁止滚动
May 25 Javascript
Vue实现省市区三级联动
Dec 27 Vue.js
Vue Autocomplete 自动完成功能简单示例
May 25 #Javascript
泛谈JS逻辑判断选择器 || &&
May 24 #Javascript
了解JavaScript中的选择器
May 24 #Javascript
Javascript通过控制类名更改样式
May 24 #Javascript
redux.js详解及基本使用
May 24 #Javascript
javascript获取元素的计算样式
May 24 #Javascript
运用js实现图层拖拽的功能
May 24 #Javascript
You might like
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
php时间戳转换代码详解
2019/08/04 PHP
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
Javascript中神奇的this
2016/01/20 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
python任务调度实例分析
2015/05/19 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
什么是组件架构
2016/05/15 面试题
力学专业毕业生自荐信
2013/11/17 职场文书
后勤部长岗位职责
2013/12/14 职场文书
师范生求职自荐信
2014/06/14 职场文书
大学生安全责任书
2014/07/25 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript