aixos ajax,使用axios如何实现ajax请求(详细教程)

2023-11-16

之前给大家介绍了jQuery利用最优雅的方式写ajax请求的相关内容,这篇文章主要给大家介绍了关于axios进阶实践之利用最优雅的方式写ajax请求的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

前言

ajax相信不用过多介绍了,作者坚信可以用配置解决的问题,请勿硬编码,下面话不多说了,来一看看详细的介绍吧。

姊妹篇 jQuery进阶:用最优雅的方式写ajax请求

axios是Vue官方推荐的ajax库, 用来取代vue-resource。更多详细的基础知识可以参考这篇文章://www.gxlcms.com/article/109444.htm

优点:增加一个ajax接口,只需要在配置文件里多写几行就可以

不需要在组件中写axios调用,直接调用api方法,很方便

如果接口有调整,只需要修改一下接口配置文件就可以

统一管理接口配置

1. content-type配置// filename: content-type.js

module.exports = {

formData: 'application/x-www-form-urlencoded; charset=UTF-8',

json: 'application/json; charset=UTF-8'

}

2. api 配置// filename: api-sdk-conf.js

import contentType from './content-type'

export default {

baseURL: 'http://192.168.40.231:30412',

apis: [

{

name: 'login',

path: '/api/security/login?{{id}}',

method: 'post',

contentType: contentType.formData,

status: {

401: '用户名或者密码错误'

}

}

]

}

3. request.js 方法// request.js

import axios from 'axios'

import qs from 'qs'

import contentType from '@/config/content-type'

import apiConf from '@/config/api-sdk-conf'

var api = {}

// render 函数用来渲染路径上的变量, 算是一个微型的模板渲染工具

// 例如render('/{{userId}}/{{type}}/{{query}}', {userId:1,type:2, query:3})

// 会被渲染成 /1/2/3

function render (tpl, data) {

var re = /{{([^}]+)?}}/

var match = ''

while ((match = re.exec(tpl))) {

tpl = tpl.replace(match[0], data[match[1]])

}

return tpl

}

// fire中的this, 会动态绑定到每个接口上

function fire (query = {}, payload = '') {

// qs 特别处理 formData类型的数据

if (this.contentType === contentType.formData) {

payload = qs.stringify(payload)

}

// 直接返回axios实例,方便调用then,或者catch方法

return axios({

method: this.method,

url: render(this.url, query),

data: payload,

headers: {

contentType: this.contentType

}

})

}

apiConf.apis.forEach((item) => {

api[item.name] = {

url: apiConf.baseURL + item.path,

method: item.method,

status: item.status,

contentType: item.contentType,

fire: fire

}

})

export default api

4. 在组件中使用import api from '@/apis/request'

...

api.login.fire({id: '?heiheihei'}, {

username: 'admin',

password: 'admin',

namespace: '_system'

})

...

浏览器结果:Request URL:http://192.168.40.231:30412/api/security/login??heiheihei

Request Method:POST

Status Code:200 OK

Remote Address:192.168.40.231:30412

Referrer Policy:no-referrer-when-downgrade

POST /api/security/login??heiheihei HTTP/1.1

Host: 192.168.40.231:30412

Connection: keep-alive

Content-Length: 47

Accept: application/json, text/plain, */*

Origin: http://localhost:8080

contentType: application/x-www-form-urlencoded; charset=UTF-8

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

Content-Type: application/x-www-form-urlencoded

Referer: http://localhost:8080/

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

username=admin&password=admin&namespace=_system

5. 更多

有个地方我不是很明白,希望懂的人可以给我解答一下

如果某个组件中只需要login方法,但是我这样写会报错。import {login} from '@/apis/request'

这样写的前提是要在request.js最后写上export var login = api.login

但是这是我不想要的,因为每次增加一个接口,这里都要export一次, 这不符合开放闭合原则,请问有什么更好的方法吗?

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

使用nodejs如何实现gulp打包

详细解读Angular5.1新功能

如何使用vuex实现菜单管理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aixos ajax,使用axios如何实现ajax请求(详细教程) 的相关文章

  • 2022年 IEEE VIS 科学可视化与体渲染论文整理与分析

    因为最近工作的关系 需要研究一下IEEE VIS中2017年以后的与我之前主要方向 体渲染 医学可视化 有关的论文 我把这些年全部的论文进行了筛选和梳理 总共筛选出57篇论文 打算写一个文章来记录这些内容 这个栏目是2022年的6篇论文的介
  • spark集群搭建与mysql元数据管理

    找个spark集群搭建是针对于上一篇hadoop的基础上搭建的 所以spark的版本也是要按照着hadoop版本进行下载 1 解压spark 修改spark的 etc profile的home目录 2 安装SCALA 并配置SCALA HO
  • ElementUI的简单使用方法讲解

    这里我们以引入button按钮为例 其实很多表单 或者 时间 等等的组件 引入方式都是一样的 举一反三吧 首先 yarn add element ui S 让我们来安装这个包 main js 全局注册 element ui这个组件 完整引入
  • Java的异常(分类、处理原则、应用实例、注意事项)

    学习笔记 异常 异常 是在运行时期发生的不正常情况 在java中用类的形式对不正常情况进行了描述和封装对象 描述不正常的情况的类 就称为异常类 以前 通常将正常流程代码和问题处理代码相结合 现在将正常流程代码和问题处理代码分离 提高阅读性
  • 2022年淘宝/天猫/京东618自动任务助手,带抢购功能源码

    下载地址 https wwc lanzouq com b01cfbrbi 支持自动完成淘宝 天猫 京东618任务 自动领取奖励 解放双手 棒棒的 先开启无障碍和悬浮窗权限 再运行助手 运行过程中可以按音量减 键强制停止 提前关闭媒体声音 直
  • 电梯安全监测丨S271W无线水浸传感器用于电梯机房/电梯基坑水浸监测

    城市化进程中 电梯与我们的生活息息相关 高层住宅 医院 商场 学校 车站等各种商业体建筑 公共建筑中电梯为我们生活工作提供了诸多便利 保障电梯系统的安全至关重要 特别是电梯机房和电梯基坑可通过智能化改造提高其安全性和稳定性 例如在暴风雨天气
  • 【转载】基于 NXP i.MX8QM 的 硬件隔离 介绍

    一 Hardware Partition 1 1 功能简介 Hardware Partition 中文叫硬件分区或者硬件隔离 基于 NXP i MX8QM 的 Hardware Partition 功能将 Resource Memory P
  • 2019顺网无盘服务器配置,顺网无盘如何不安装网维客户端上传系统到无盘服务器...

    14Q3的无盘万能镜像包中并没有安装网维大师客户端 为的是让大家可以自由选择安装网维大师客户端版本进行安装 而不会因为升级 降级这些麻烦又难理解的事情阻碍大家 近期也有人询问如何不安装网维客户端直接上传系统 其实非常简单 这里给大家做个详细
  • usb设备的检测及区分(sata硬盘、优盘及移动硬盘)

    原理 1 如果有外置usb设备插入 会产生 proc scsi usb storage目录 ide硬盘上默认 没有 并且会在 proc scsi usb storage目录中产生数字文件 此文件存储了设 备的相关信息 2 sys class
  • ES5和ES6声明的“全局变量”有什么不同?

    复看红宝石书关于执行上下文与作用域部分的时候发现了以前遗漏的小知识点 let和const的顶级声明不会定义在全局上下文中 1 什么是全局上下文 根据ECMAScript实现的宿主环境不同 表示全局上下文的对象可能不一样 但在浏览器中 我们所
  • ISE在线逻辑分析仪Chipscope的使用

    前言 和 Quartus 的 SingleTapII 类似 ISE 也有自己的内置在线逻辑分析仪 Chipscope 在这里记录一下 Chipscope 的主要使用方法 以便以后回顾 本文使用 UART 串口回环模块进行验证 我们要抓取的信
  • 【Linux】设计模式-----简单工厂模式

    概念 简单工厂模式即 只需要输入实例化对象的名称 工厂类就可以实例化出来需要的类 核心 实现工厂模式的核心就是多个派生类public继承基类 同时根据用户的需求在简单工厂类里面实例化基类的对象 从而根据基类里面的虚函数来实现对派生类的函数调
  • ajax核心代码提交,emlog评论ajax提交的两种方法

    推荐使用方法二 不需要修改源代码 通过正则过滤出系统的错误消息 方法一 需要修改源代码 1 include lib function base php中 function show 404 page 函数上方添加函数 显示json信息 pa
  • TFTP协议下载实验

    include
  • java.lang.ClassNotFoundException: Didn‘t find class “###“ on path: DexPathList

    项目场景 例如 项目场景 使用AS开发时 项目中引用了封装的aar或者第三方aar文件 并且项目使用了AndroidX时APP闪退问题 报错信息如下 报错信息截图大概如下 问题描述 Caused by java lang ClassNotF
  • 数组和链表的区别

    数组和链表的区别以及各自的优缺点 1 数组和链表的区别 1 数组的元素个数是固定的 而链表的结点个数可按需要增减 2 数组元素的存储单元在定义时分配 链表节点的存储单元在执行时动态向系统申请 3 数组的元素顺序关系由元素在数组中的位置 即下
  • cadence 批量一次性修改title 页码标题等

    1 在Cadence中 选中dsn 菜单选择edit gt browse gt titleblock 弹出此框时 一般选择 Use instances 2 弹出的titleblock窗口中 鼠标点击第一个 滑动到最后一个 按住 shift
  • ffmpeg webm 提取_使用ffmpeg将webm转换为mp4

    当我尝试将webm文件转换为mp4时 输出非常不连贯 并且似乎ffmpeg丢弃了许多帧 我使用以下命令进行转换 ffmpeg i movie webm movie mp4 ffmpeg i movie webm vcodec libx264
  • MySql-基础查询与排序

    基础查询与排序 2 1 SELECT语句基础 从表中选取数据 SELECT语句 从表中选取数据时需要使用SELECT语句 也就是只从表中选出 SELECT 必要数据的意思 通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询 q

随机推荐