热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

axios如何在nodejs项目里封装_vue项目axios封装、easymock使用

vue全家桶概括下来就是项目构建工具(vue-cli)路由(vue-router)状态管理(vuex)http请求工具vue有自己的http请求工具插件vue-resource&#

vue全家桶概括下来就是

项目构建工具(vue-cli)

路由(vue-router)

状态管理(vuex)

http请求工具

vue有自己的http请求工具插件vue-resource,但是vue2.0后作者就不在更新了,后更推荐axios。

下面是vue项目中axios常用的方法,以及生成虚拟数据的easy-mock的使用方法。

一、axios安装和easy-mock的使用

1. axios

特点

浏览器端发起XMLHttpRequests请求

node端发起http请求

支持Promise API

监听请求和返回

转化请求和返回

取消请求

自动转化json数据

客户端支持抵御

安装

npm install --save axios

为了解决post默认使用的是x-www-from-urlencoded 去请求数据,导致请求参数无法传递到后台,所以还需要安装一个插件QS

npm install qs

2. easy-mock

Easy Mock 是一个可视化,并且能快速生成 模拟数据 的持久化服务。不需要再本地安装,只需要到官网上注册登陆后加入或新建项目,在项目内定义接口和返回数据的格式。

步骤如下:

1)登陆

2)新建项目

3)新建接口,Base URL是访问地址

4)定义接口名称和数据返回格式

这样一个接口就定义好了,我们可以通过请求工具访问,就可以得到 /login中刚定义的数据。更多定义easy-mock返回数据格式的方式,具体请参考官网例子。参考其他例子:https://blog.csdn.net/qq_42991509/article/details/94577331

二、axios 使用

axios的实例方法和配置很多,下面只是常用基本的封装和使用方式。

在vue项目中src文件夹下,有这几个需要新增的地方。

1.  appCount.js文件

const HTTP_BASE_URL = 'https://www.easy-mock.com/mock/5d5f5a3f6778c215243b94ea/' // easy-mock

const TOKEN = '1234' // token

export default {

HTTP_BASE_URL,

TOKEN

}

在appCount.js文件中,我们可以放一些全局的变量。例如:访问地址的ip、token常量,超时取消请求的时常等。

2. request.js文件

import axios from 'axios'

import appCONST from './appCount.js'

const requestData = async (url, params = {}) => {

let res = await axios({

url: appCONST.HTTP_BASE_URL + url,

data: params || {},

method: params.method || 'POST',

header: params.header || {

'content-type': 'application/json'

}

})

console.log(res)

if(requestSuccess(res)) {

return res.data

} else {

throw requestException(res)

}

}

/**

* 请求成功

*/

function requestSuccess(res) {

const status = res.status

// 请求错误

if (status !== 200) {

return false

}

const resData = res.data

return !(resData && resData.code !== 1)

}

/**

* 异常

*/

function requestException(res) {

const error = {}

error.serverCode = res.status

const resData = res.data

error.code = resData.code

error.msg = resData.msg || '系统错误'

error.data = resData.result || {}

return error

}

// 导出封装函数

export default {

requestData

}

在上面文件中,requestData方法是我们封装的axios请求,在方法中,我并没有使用到安装时qs。因为在方法中定义了请求头content-type的类型是json格式,所以参数格式直接传对象进来就可以了。

如果没有定义content-type的类型,那么默认是application/x-www-form-urlencoded。请求参数在Form Data中,只能上传键值对,并且键值对都是间隔分开的。

参数形式:  name1=value1&name2=value2。那么最好引入qs,然后将params格式化一下,data:qs.stringify(params)。

3. util.js

可以写一些公共的方法,例如:存取本地缓存,参数格式化等方法。然后在需要用到的地方导入这个文件,就可以使用其中的方法了。

export const localSave = (key, value) => {

localStorage.setItem(key, value)

}

export const localRead = (key) => {

return localStorage.getItem(key) || ''

}

使用方式

import * as util from '@/libs/util'

export default {

name: 'login',

data() {

return {

da:''

}

},

methods: {

submit() {

util.localSave('data', '123')

}

}

}

4. api.js

import wxRequest from '../libs/request'

// 用户登录

const login = (params) => wxRequest.requestData('login', params)

export default {

login

}

5. 调用接口

点我登陆

import api from '@/api/api'

export default {

name: 'login',

data() {

return {

da:''

}

},

methods: {

async submit() {

try {

const dd = await api.login()

console.log(dd)

} catch(err) {

console.log(err)

}

}

}

}

更多方法,例如添加拦截器也挺好用。



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
author-avatar
PHP小龙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有