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 相关文章推荐
IE8 下的Js错误HTML Parsing Error...
Aug 14 Javascript
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
利用json获取字符出现次数的代码
Mar 22 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
基于JS实现翻书效果的页面切换样式
Feb 16 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
Nov 06 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
Dec 25 Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 Javascript
小程序云开发实战小结
Oct 25 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
详解在Javascript中进行面向切面编程
Apr 28 Javascript
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+SQLite存储方案
2010/09/04 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php实现微信公众号无限群发
2015/10/11 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
javascript读取xml实现javascript分页
2013/12/13 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python描述器descriptor详解
2015/02/03 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
几个Linux面试题笔试题
2012/12/01 面试题
2014年政协委员工作总结
2014/12/01 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
负责培养人意见
2015/06/05 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS