Axios使用总结

软工实践个人技术总结

技术概述

Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中,主要作用为用于向后台发起请求的,还有在请求中做更多是可控功能。自从vue2.0之后,就不再对vue-resource更新,而是推荐使用axios

技术详述

使用方法

  • 在安装完成VUE后安装Axios
npm install --save axios vue-axios
  • 从VUE框架中引入Axios,以便使用Axios的函数
import Vue from 'vue';
import axios from 'axios';
import VueAxios from 'vue-axios';
Vue.use(VueAxios,axios);

  • Axios具体使用
//Axios的get请求的具体操作
this.axios.get('/test'      //此处为请求的地址具体处理的界面
, {
    params: {
      属性名: 值,
      属性名: 值
    }      //此处为传递的参数,使用params
  })
  .then(function (response) {
    console.log(response);
  })     //请求成功所执行的方法
  .catch(function (error) {
    console.log(error);
  });       //请求失败所执行的方法


//Axios的post请求  与上面类似
this.axios.post('/user', {
        firstName: 'Fred',
        lastName: 'Flintstone'
      })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });


//以及其他常用的方法
3.axios.request(config)
 
4.axios.head(url[, config])
 
5.axios.delete(url[, config])
 
6.axios.put(url[, data[, config]])
 
7.axios.patch(url[, data[, config]])
 
8.axios.all(iterable)执行多个并发请求      

使用困难

在使用Axios时经常会遇见跨域问腿,而跨域指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制,通俗的来说就是a页面想要获取b页面资源,如果a,b页面的协议、域名、端口号、子域名不同,所进行的访问都是跨域的,而浏览器一般为了安全都限制了跨域访问,也就是不允许跨域访问资源。

  • 解决方法
//在项目目录里找到config文件夹,然后找到index.js,找到proxyTable选项
proxyTable: {
      '/api': {
    target: 'http://baidu.com',//举例说明,在开发中换成自己的地址
    pathRewrite: {
      '^/api': ''
    }
//设置成如上的格式,而在具体使用时则把url设置变化一下
this.$http({
          method: 'POST',
          url: '/api/auth/login',//此处做出改变
          data: {
            'username': this.username,//举的栗子
            'password': this.password //举的栗子
          }
        }).then(res => {
          console.log(res)
        }).catch(err => {
          console.log(err)
        })

此时就可以从前端中成功解决跨域问题

//又或者在后端中解决问题即添加一个过滤器
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
 
        // 不使用*,自动适配跨域域名,避免携带Cookie时失效
        String origin = request.getHeader("Origin");
        if(StringUtils.isNotBlank(origin)) {
            response.setHeader("Access-Control-Allow-Origin", origin);
        }
 
        // 自适应所有自定义头
        String headers = request.getHeader("Access-Control-Request-Headers");
        if(StringUtils.isNotBlank(headers)) {
            response.setHeader("Access-Control-Allow-Headers", headers);
            response.setHeader("Access-Control-Expose-Headers", headers);
        }
 
        // 允许跨域的请求方法类型
        response.setHeader("Access-Control-Allow-Methods", "*");
        // 预检命令(OPTIONS)缓存时间,单位:秒
        response.setHeader("Access-Control-Max-Age", "3600");
        // 明确许可客户端发送Cookie,不允许删除字段即可
        response.setHeader("Access-Control-Allow-Credentials", "true");
        
        chain.doFilter(request, response);
    }
} 

使用后端的解决方案也可以解决问题

总结

在使用VUE进行前端界面开发时,现在常用Axios进行后台请求,所以掌握Axios的使用在前端开发中有着极为重要的意义,所以有必要掌握axios的相关知识,可以在以后的工作当中在前端进行开发时避免遇见大的障碍,并且Axios具有如下特点:在浏览器中发送XMLHttpRequests请求, 支持Promise API, 提供了一些并发请求的接口简化操作,自动转换JSON数据,拦截请求和响应,转换请求和响应数据等优势,具有很好的适应性。

你可能感兴趣的:(Axios使用总结)