vue-ajax/axios请求函数封装: axios+promise
项目文件目录/src/api
ajax.js
/**
* ajax 请求函数模块
* 返回值为promise对象
*/
import axios from 'axios'
export default function ajax (url, data = {}, type = 'GET') {
return new Promise((resolve, reject) => {
let promise
if (type === 'GET') {
// 准备url query 参数数据
let dataStr = '' // 数据拼接字符串
Object.keys(data).forEach(key => {
dataStr += key + '=' + data[key] + '&'
})
if (dataStr !== '') {
dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
url = url + '?' + dataStr
}
// 发送get 请求
promise = axios.get(url)
} else {
// 发送post 请求
promise = axios.post(url, data)
}
promise.then(response => {
resolve(response.data)
})
.catch(error => {
reject(error)
})
})
}
index.js
举例:接口请求函数封装: 每个后台
/**
* 包含n个接口函数的模块
* 返回值为promise对象
*
* 1、根据经纬度获取位置详情
* 2、获取食品分类列表
* 3、根据经纬度获取商铺列表
* 4、根据经纬度和关键字搜索商铺列表
* 5、获取一次性验证码
* 6、用户名密码登陆
* 7、发送短信验证码
* 8、手机号验证码登陆
* 9、根据会话获取用户信息
* 10、用户登出
*/
import ajax from './ajax'
// 1、根据经纬度获取位置详情
export const reqAddress = (geohash) => ajax(`/position/${geohash}`)
// 2、获取食品分类列表
export const reqFoodTypes = () => ajax('/index_category')
// 3、根据经纬度获取商铺列表
export const reqShops = (latitude, longitude) => ajax('/shops', {
latitude,
longitude
})
// 4、根据经纬度和关键字搜索商铺列表
export const reqShopsSearch = (geohash, keyword) => ajax('/search_shops', {
geohash,
keyword
})
// 5、获取一次性验证码
export const reqCaptcha = () => ajax('/captcha')
// 6、用户名密码登陆
export const reqPwdLogin = (name, pwd, captcha) => ajax('/api/login_pwd', {
name,
pwd,
captcha
}, 'POST')
// 7、发送短信验证码
export const reqSendCode = phone => ajax('/api/sendcode', {
phone
})
// 8、手机号验证码登陆
export const reqSmsLogin = (phone, code) => ajax('/api/login_sms', {
phone,
code
}, 'POST')
// 9、根据会话获取用户信息
export const reqUser = () => ajax('/api/userinfo')
// 10、用户登出
export const reqLogout = () => ajax('/api/logout')
vue-ajax/axios请求函数封装: axios+promise的更多相关文章
- 关于ajax网络请求的封装
// 封装的ajax网络请求函数// obj 是一个对象function AJAX(obj){ //跨域请求 if (obj.dataType == "jsonp") ...
- vue-cli配置axios,并基于axios进行后台请求函数封装
文章https://www.cnblogs.com/XHappyness/p/7677153.html已经对axios配置进行了说明,后台请求时可直接this.$axios直接进行.这里的缺点是后端请 ...
- vue2 axios 接口函数封装
封装 axios 工具,编辑 src/api/index.js 文件 首先,我们要使用 axios 工具,就必须先安装 axios 工具.执行下面的命令进行安装 npm install axios - ...
- axios请求的封装
/* axios的请求封装 */ //axios的原生写法get,post请求 //第一个参数为请求地址,第二个参数为请求的参数,params是将参数拼接在url的后面 ...
- axios请求方法封装.
axios的使用上一般封装好对应的方法,ES6导出,直接调用,消息通知使用了ElementUI的Message组件. 这是一个封装了axios的Rest风格的工具类,包扩常用的POST,GET,PUT ...
- C# 后台服务器端 Get 请求函数封装
请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...
- vue全局设置请求头 (封装axios请求)
Vue.http.interceptors.push((request, next) => { // 请求发送前的处理逻辑 request.headers.set('Authorization' ...
- vue+axios请求头封装
import { mapMutations } from 'vuex' import axios from 'axios' import { Toast } from 'mint-ui'; impor ...
- axios请求报Uncaught (in promise) Error: Request failed with status code 404
使用axios处理请求时,出现的问题解决 当url是远程接口链接时,会报404的错误: Uncaught (in promise) Error: Request failed with status ...
随机推荐
- C++类和对象的封装 点和圆的案例
主要练习 :在类中可以让另一个类作为本类的成员. 案例:判断点和圆的位置关系. 一.第一种直接方法 using namespace std; #include <iostream> cla ...
- PHP基础之常量与变量
1.变量:用来存储信息的空间大小 $var 2.常量:定义之后不可以更改,标识符,并且给其赋值,常量是全局,在整个页面中均可使用,常量一般有英文字母.下划线.数字组成,开头不能是数字和$ 使用defi ...
- 个人项目作业WC(JAVA)
GitHub地址:https://github.com/1666403186/WC 一.题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行单元测试.回归 ...
- Python开发的入门教程(五)-set
介绍 本文主要介绍Python中set的基本知识和使用. Python中什么是set dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的. 有的时候,我们只 ...
- vue前端工程化
今日目标 1.能够了解模块化的相关规范 2.了解webpack3.了解使用Vue单文件组件4.能够搭建Vue脚手架 5.掌握Element-UI的使用 1.模块化的分类 A.浏览器端的模块化 1) ...
- 模型层中QuerySet的学习
创建对象 使用关键字参数实例化模型实例来创建一个对象,然后调用save()把它保存到数据库中 pub_obj = models.Publisher(title='奥利给出版社') pub_obj.sa ...
- 力扣leetcode 56. 合并区间
56. 合并区间 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: ...
- Mysql常用的一些命令
1.登录Mysql数据库, 打开终端命令输入窗口,输入命令:mysql -u <账户名,一般是root> -p <密码>. 2.显示所有的数据库: show databases ...
- 利用阿里云服务器免费体验word press博客、个人网站
本文首发于我的个人博客:https://chens.life/create-wordpress-blog.html 前言 目前市面上有许许多多的虚拟云服务器ECS,例如阿里云.华为云.又拍云等等,他们 ...
- POJ-1001-Exponentiation(高精度大数)
Problems involving the computation of exact values of very large magnitude and precision are common. ...