在vue项目中如何封装axios

163 阅读2分钟

axios和ajax的区别

本质

axios:

Axios是基于Promise的HTTP库,可以用在浏览器中,也可以用在node.js中。axios通过Promise实现对ajax的一种封装,就像jQuery实现ajax封装一样

功能特性:
  1. 从浏览器中创建XMLHttpRequest
  2. 从node.js中创建http请求
  3. 支持Promise API
  4. 支持拦截请求和响应
  5. 转换请求和响应数据
  6. 取消请求
  7. 自动转换JSON数据
  8. 客户端支持防止XSRF攻击

ajax

Ajax应用的主要特点是使用脚本操纵HTTP和Web服务器进行数据交换,不会导致页面重载。ajax实现了网页的局部数据刷新。

简单来说,ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装。

axios的使用

把请求对象挂载到vue的原型上 Vue.prototype
在组件中通过this.$http使用

  • 在main.js中
//导入axios
import axios from 'axios'

//将axios挂载到Vue的原型上
Vue.prototype.$http = axios

优点:使用方便
缺点:不利于维护

axios封装

把每一个请求模块封装成独立的函数,需要的时候加载调用,利于接口的管理和维护

  • 在utils文件创建http.js文件
//导入axios
import axios from 'axios'

//创建实例
let instance = axios.create({
   baseURL:'',  //基地址
   timeout:3000  //响应时长
})

//请求拦截
instance.interceptors.request.use()

//响应拦截
instance.interceptors.response.use()

export default instance

  • 在src下新建api文件夹,在api下新建一个js文件
// 引入axios实例
import http from '../utils/http'

export function login(data){
  return http({
     url:'',  //请求地址
     method:'POST', //请求方法
     data    //参数
  })
}
  • 使用 在vue组件中
//导入封装的axios
import {login} from './api/user'

async created(){
  //调用login方法
  let res = await login()
}

http和https的区别

  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http端口号是80,https端口号是443
  • http的连接很简单,是无状态的,https协议是由SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

GET请求和POST请求的区别?

1.get请求一般用来请求获取数据
post请求一般作为发送数据到后台,传递数据,创建数据
2、get请求也可以传参到后台,但是传递的参数则显示在地址栏,安全性低,且参数的长度也有限制(2048字符)
post请求则是将传递的参数放在request body中,不会在地址栏显示,安全性比get请求高,参数没有长度限制
3、get请求刷新浏览器或者回退没有影响
post请求则会重新请求一遍
4、get请求可以被缓存,也会保留在浏览器的历史记录中
post请求不会被缓存,不会保留在浏览器的历史记录中
5、get请求通常是通过url地址请求    post常见的则是form表单请求

image.png