热门标签 | 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)

}

}

}

}

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



推荐阅读
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • async/await 是现代 JavaScript 中非常强大的异步编程工具,可以极大地简化异步代码的编写。本文将详细介绍 async 和 await 的用法及其背后的原理。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
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社区 版权所有