Vue:Axios发送网络请求
2021-03-10 13:49
225 查看
axios
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
安装
npm install axios --save
使用
发送Get请求- 不带参数
import axios from 'axios' // 发送请求, 默认为get请求 axios({ url: "http://49.232.203.244:8001/v1/link", }).then(res => { console.log(res); })
发送Get- 带查询参数
// get 请求带查询参数 axios({ url: "http://49.232.203.244:8001/v1/post", params: { limit: 10, page: 1 } }).then(res => console.log(res));
发送post请求
// post 请求 axios({ url: "http://49.232.203.244:8001/v1/auth", method: "post", data: { username: "yan22", password: "S$V0CLeH_$" } }).then(res => console.log(res))
并发请求
// 发送多个请求(并发) axios.all([ axios({ url: "http://49.232.203.244:8001/v1/link", }), axios({ url: "http://49.232.203.244:8001/v1/post", params: { limit: 10, page: 1 } }) ]).then(results => { console.log(results) })
响应结构示例
全局配置
// 配置默认 url axios.defaults.baseURL = "http://49.232.203.244:8001" // 配置超时时间 5s axios.defaults.timeout = 5000 axios({ url: "/v1/link" // 最终访问的地址为: baseURL + url }).then(res => console.log(res))
axios实例
解决在一个项目中,需要调用多台服务器上的接口服务问题
// axios实例, 解决一套项目接口部署到多台服务器上 const instancel = axios.create({ baseURL: "http://49.232.203.244:8001", timeout: 3000 }) instancel({ url: "/v1/link" }).then(res => console.log(res)) const instancel9001 = axios.create({ baseURL: "http://49.232.203.244:8000" }) instancel9001({ url: "/message", params: { page: 1 } }).then(res => console.log(res))
网络请求封装
network/request.js
import axios from 'axios' export function request(config){ // 创建axios实例 const instance = axios.create({ baseURL: "http://49.232.203.244:8001", timeout: 5000 }) // 发送真正的网络请求 return instance(config) }
使用其来发送请求
import {request} from '../src/network/request' // 使用封装的axios 发送请求 request({ url: "/v1/link", }).then(res => console.log(res)) .catch(err => console.log(err))
拦截器
请求/响应后 进行处理
如: 添加header,loading 图标,token 校验
import axios from 'axios' export function request(config){ // 创建axios实例 const instance = axios.create({ baseURL: "http://49.232.203.244:8001", timeout: 5000 }) // axios 拦截器 instance.interceptors.request.use(config => { // 请求成功 console.log(config) // 拦截之后需要把配置返回出去 return config }, err => { // 失败 console.log(err) }) // 响应拦截器 instance.interceptors.response.use(res => { console.log(res) // 拿到接口实际返回的内容 return res.data }, err => { console.log(err) }) // 发送真正的网络请求 return instance(config) }
源码地址
相关文章推荐
- vue中的所有axios请求都会发送2次,但是第一次不返回数据的原因
- vue项目中axios请求网络接口封装的示例代码
- Vue——axios网络请求
- vue通过axios发送put/post等请求,配合后台consume"MediaType.APPLICATION_FORM_URLENCODED"
- Vue中发送ajax请求——axios使用详解
- vue中axios处理http发送请求的示例(Post和get)
- VUE—axios的get请求向后台发送数据(图文详情)
- VUE—axios自定义请求配置—3、transformRequest在向服务器发送前,修改请求数据(图文详情)
- 网络应用——axios+vue
- Vue——axios基本配置及请求拦截
- iOS网络基础--发送同步、异步请求
- iOS网络-NSURLSession/AFNetworking发送HTTPS网络请求
- vue中axios使用、跨域请求设置
- vue中axios跨域请求
- Vue 带参数axios请求
- 实现axios的统一封装API,axios结果格式处理,vue组件的loading动画变量在axios请求的前后改变
- vue中axios跨域请求
- iOS网络-NSURLSession/AFNetworking发送HTTPS网络请求
- 【iOS开发-网络】使用NSURLSessionDataTask发送get和post请求
- 关于vue项目中,axios请求方式,跨域请求的处理