当前位置:   article > 正文

AXIOS_安装和入门_安装axios.js网站

安装axios.js网站

一、技术说明

  1.  axios.js 是一个基于promise 的 http 库,支持浏览器和Node环境;
  2. 传统的 ajax 技术无法满足前后端分离时代的新需求,而 axios 则在实现 ajax 功能的基础上得到了技术增强
  3. 一般使用 axios 来发送get/post请求,然后返回 json 格式数据

二、安装测试

  1. 安装方式:一种是node下运行,另一种是在浏览器下运行
  2. node下运行,需要安装node环境,安装完毕,在项目下命令安装:npm install axios
  3. 如果在浏览器使用,可以先用cdn地址代替入门:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

4.如果有本地服务器的话,可以本地测试,没有的,下面提供一个网站:https://cdn.liyanhui.com/data.json

5.我们先用简单方式在Node环境下实现远程获取 json 数据

  1. const axios = require('axios');
  2. //使用 get 请求获取数据
  3. axios.get('https://cdn.liyanhui.com/data.json')
  4. .then(res => {
  5. console.log(res.data)
  6. })
  7. .catch(err => {
  8. console.log('错误:'+err)
  9. })

6. 浏览器执行远程 ajax 请求会有跨域问题,我们保存到本地执行即可;

7. 本地 IDE 具有内置服务器功能,可以直接套用运行:

https://cdn.liyanhui.com/data.json (可跨域,设置过)

https://cdn.ycku.com/data.json(未跨域,默认)

【注:】如果你是node环境发送,那倒是无所谓,不受跨域影响

8.

(1)有时,我们需要在url地址配置参数进行数据筛选(这里单纯是json,为了理解)

  1. axios.get('https://cdn.liyanhui.com/data.json',{
  2. params:{
  3. id:19,
  4. status:1,
  5. }
  6. }).then(res => {
  7. console.log(res.data);
  8. });

(2)我也可以将所有的配置,比如 get , url 都以配置的方式实现

  1. axios({
  2. method: 'get',
  3. url: 'https://cdn.liyanhui.com/data.json',
  4. params: {
  5. id: 19,
  6. status: 1,
  7. }
  8. }).then(res => {
  9. console.log(res.data)
  10. })

三、并发操作

  1. 如果项目中可能会产生多个异步请求,他们会根据耗时长短来执行
  2. 我们如果想让所有异步请求以后,按照指定顺序执行的话,使用all()方法
    1. axios({
    2. method: 'get',
    3. url: 'https://cdn.liyanhui.com/data.json',
    4. params: {
    5. id:1,
    6. status :5
    7. }
    8. }).then(res =>{
    9. console.log(res);
    10. })
    11. axios({
    12. method: 'get',
    13. url: 'https://cdn.liyanhui.com/data.json',
    14. params: {
    15. id:1,
    16. status :5
    17. }
    18. }).then(res =>{
    19. console.log(res);
    20. })
    21. //上面的两个一定是多线程执行,谁先完成先发送,而all()方法则是把多个axios请求都完成,然后进入队
    22. //列,再一个一个按序发送
    23. axios.all([
    24. axios({
    25. url: 'https://cdn.liyanhui.com/data.json?id=3'
    26. }),
    27. axios({
    28. url: 'https://cdn.liyanhui.com/data.json?id=2'
    29. }),
    30. axios({
    31. url: 'https://cdn.liyanhui.com/data.json?id=1'
    32. }),
    33. ]).then(res => {
    34. for(let i = 0 ; i < res.length;i++){
    35. // console.log(res[i].config.data);
    36. console.log(res[i]);
    37. }
    38. });

     

 四、实例化和拦截

1. 全局属性配置,即将属性中的大量重复内容抽离出来单独设置;

//全局默认值设置,baseUrl 会自动再url前面添加

axios.defaults.baseURL = 'https;//cdn.liyanhui.com';

ps: 其它更多属性可以参考手册,一般来说baseURL,timeout和headers 比较常用;

2. 实例化,顾名思义就是new一个对象,这样这个对象具有独立性不会被干扰;

  1. //实例化
  2. const myAxios = axios.create();
  3. myAxios.defaults.baseURL = 'https://cdn.liyanhui.com';
  4. //或者
  5. const myAxios = axios.create({
  6. baseURL: 'https://cdn.liyanhui.com',
  7. });
  8. //request 通用
  9. myAxios.request({
  10. method: 'get',
  11. url: '/data.json'
  12. }).then(res => {
  13. console.log(res.data);
  14. });

3. 拦截器

(1)就是在 Ajax 获取数据之前先拦截处理一些事务操作;

(2)这些操作包括:修改axios配置信息 、loading  、判断验证跳转等;

(3)拦截处理完毕以后,再通过return 返回继续处理即可

  1. myAxios.request({
  2. method: 'get',
  3. url: '/data.json',
  4. }).then(res => {
  5. console.log(res.data);
  6. });
  7. //添加请求拦截
  8. myAxios.interceptors.request.use(config => {
  9. //仅仅会执行此作用域下额内容
  10. console.log('loading');
  11. //如果删除下面内容,那么请求将直接报错,因为拦截该axios对象后,拦截器仅会执行该代码块中的内容
  12. return config;
  13. });
  14. //添加响应拦截
  15. myAxios.interceptors.response.use(response => {
  16. console.log('loading');
  17. return response;
  18. });

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号