Axios开发实施指南

文档版本号:V0.1.1

最近修订日期:2020.07 (npm axios 0.19.2)

文档作者:曲院风荷 整理汇编

用途:自用

1 序章

理论技术实践是必不可少的。Talk is Cheap, show me the Code.

1.1 序言

本文档属于专著(也可视为教程),详细介绍如何使用axios进行Web开发。为方便演示,使用vs code作为code editor,安装插件运行调试,并搭配ApiPost对API接口请求进行测试验证对比。

文中单刀直入,直奔主题,详细说明了axios代码级的使用技巧。

同时也简要描述了vs code开发操作步骤。

即学即用,活学活用。

1.2 简介

Axios,易用、简洁且高效的http库。

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

1.3 功能特色

(可以跳过。)

  • 支持node端和浏览器端

同样的API,node和浏览器全支持,平台切换无压力

  • 支持 Promise

使用Promise管理异步,告别传统callback方式

  • 丰富的配置项

支持拦截器等高级配置

  • 社区支持

axios相关的npm包数量一直在增长

具体:

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF

1.4 浏览器支持

image-browsersuport

2 使用

可以跳过本章节(无视)。

2.1 推荐

可以使用axios替代Ajax进行http(s)请求。

2.2 安装引用

2.2.1 Using npm

$ npm install axios

2.2.2 Using bower

$ bower install axios

2.2.3 Using yarn

$ yarn add axios

2.2.4 Using cdn

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3 项目实践(源代码)

Talk is cheap,show me the code. 直接上代码。

预备条件:

安装浏览器(如Chrome or Firefox, etc.),安装方法见另外指南。

3.1 开发环境准备(vs code)

预备条件:

预先安装好Visual Studio Code(参见另外指南)。

启动vs code:

进入资源管理器(Win10)相应源码文件夹SourceCode(如图示)

image-20201224095949158

我们的项目代码将放在Edx(Root根目录)。

输入cmd+Enter(回车)

image-20201224100030397

会打开cmd命令窗口并切换到相应目录(也可以另外方式打开)

image-20201224100059212

输入code ./Edx+Enter(回车)

image-20201224100122214

可以看到vs code启动了,并打开了文件夹,项目文件结构如下:

image-20201224100142891

实际上我们只要用到2个文件(一个js文件和一个html文件)。

其它文件忽略。

注:读者可以自己新建一个文件夹做测试学习。

3.2 运行环境准备(Live Server)

如果没有安装Live Server插件,先安装。

选择扩展:

image-20201224100221873

输入live server

image-20201224100243248

安装Live Server。

注:可能有多个相似的插件,不要选错。

3.3 运行对比

直接双击.html文件

image-20201224100312326

在浏览器URL地址栏查看

image-20201224100341342

点击 i 图标,

image-20201224100802951

再看看网页

image-20201224100822978

这不是我们的运行方法。

我们使用的正确运行方法如下:

选择vs code的资源管理器(注意不是windows资源管理器)

image-20201224100848949

在index.html文件单击鼠标右键,选择“Open with Live Server”。

看看地址栏

image-20201224100910635

点击i 图标

image-20201224100931794

再看看网页

image-20201224100950407

你现在应该能看出这2种不同方法的巨大差异了。

这就是我们运行网站的方式。

注:index.html文件代码见下面。

3.4 应用场景

一般我们会经常使用到表单form,用以接受用户输入,并保存信息(Post);或者回显用户信息(Get)。

这个时候可以使用axios进行http(s)请求。

下面是一个简单的留言板,我们借用一下表单编写提交代码,用以说明如何使用axios进行Get/Post请求。

新建一个index.html文件,输入!+Enter(回车),自动生成html5格式框架文件。

image-20201224101030425

你不用太关注具体表单内容和.html的内容,跟往常无异。

3.5 html表单

主要表单示范

image-20201224101105255

实际上内容不重要,我们建立一个form即可。

在html最后我们要用到我们的业务逻辑js。

image-20201224101130007

3.6 引用axios

主要关键引用(见上面Using cdn)

image-20201224101150997

3.7 提交事件

我们在js文件夹下新建文件messageboard.js

image-20201224101222797

定义几个常量:

form是对我们html里面表单的引用;

url是我们准备请求的第三方web api接口服务(后端);你可以用自己项目的API服务器测试。

api_get是我们准备用axios发起Get请求的Restful API。

api_post是我们准备用axios发起Post请求的Restful API。

我们分别修改提交事件处理函数(方法),测试这2个APIs。

3.8 Get Request

3.8.1 代码

axios发起Get请求的标准示范代码:

image-20201224101249640

3.8.2 运行结果

我们编写messageboard.js提交事件处理函数

image-20201224101315561

调用getMsg(),获取信息。

按上面方法,在index.html右键 Open with Live Server。

image-20201224101334974

填写表单(内容不重要),点击提交。

image-20201224101355881

这里我们使用的是Chrome浏览器,F12打开调试工具。

image-20201224101412142

可以跟以下ApiPost接口工具对比,你会发现结果是一致的。

3.8.3 ApiPost请求对照

打开ApiPost

image-20201224101433323

输入接口,发送请求

image-20201224101506434

与浏览器运行结果一致。

3.9 Post Request

3.9.1 代码

axios发起Post请求的标准示范代码:

入参可以是如下常见2种格式(方式):

application/json

或者

formdata

以下是2种入参的示范代码:

image-20201224101538746

因为这里使用的测试API服务器使用的是formData,所以axios调用如下:

image-20201224101557443

实际上我们只是示范POST方法,并不是提交留言,是提交用户登录的接口,所以前3个入参就够了。

image-20201224101622766

以下方法兼容这2种参数作为入参。

image-20201224101642980

3.9.2 运行结果

我们在编写messageboard.js的提交事件处理函数中修改一下调用函数。

调用postMsg(),获取信息。

按上面方法,在index.html右键 Open with Live Server。

image-20201224101705023

同样,随便填写表单(内容不重要),点击提交。

这里我们使用的是Chrome浏览器,F12打开调试工具。

image-20201224101727052

看看data信息体(body)

image-20201224101750526

可以跟以下ApiPost接口工具对比,你会发现结果是一致的。

3.9.3 ApiPost请求对照

输入接口,发送请求

image-20201224101809791

与浏览器运行结果一致。

3.10 跨域

我们在上面Post请求中可以看到支持跨域请求(只要API服务器开放了允许权限)。

image-20201224101831124

查看axios的官方文档发现了这个:

image-20201224101852885

关于XSRF的一篇文章:参加附录。

3.11 ApiPost常见问题

ApiPost使用参见另外指南。

如果出现错误信息:

image-20201224101914395

请检查是否已经选择了环境(右上角)

image-20201224101931489

切换环境

image-20201224101952815

4 总结

Axios请求就是几行代码。

js引用:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

cdn

image-20201224102017556

执行GET请求

image-20201224102039064

执行POST请求

image-20201224102058402

执行多个并发请求:可以一次把多个请求写在一起

image-20201224102120437

5 更多(More)

(可以跳过。)

更多axios API 可以参照以下axios资源文档。

比如,可以通过向 axios 传递相关配置来创建请求。

image-20201224102144539

实例方法

image-20201224102206403

响应结构

image-20201224102230809

这里不再一一罗列。简单实用,Get/Post已经足够。

6 附录

6.1 名词解释

  • CSRF(XSRF)

(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。

也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF定义的主语是”请求“,是一种跨站的伪造的请求,指的是跨站伪造用户的请求,模拟用户的操作。

6.2 参考资源

Copyright © 德和居 2021 粤ICP备20069867号 在CC-BY-NC-SA 4.0协议下授权使用,除非另有说明 all right reserved,powered by Gitbook本文修订时间: 2020-12-24 10:41:29

results matching ""

    No results matching ""

    results matching ""

      No results matching ""