网络数据请求,请求拦截器与响应拦截器

 

网站数据请求,先安装 axios 模块

npm i axios

 

 

src 中新建一个文件夹 request ,里面新建一个文件叫 request.js ,

import axios from 'axios'

 

 1 import axios from 'axios'
 2 
 3 // instance 实例 对象
 4 const instance = axios.create({
 5   baseURL: "http://kumanxuan1.f3322.net:8881/cms",
 6     //延迟时间为5s
 7   timeout: 5000
 8 })
 9 
10 // 主要有两个东西:请求拦截器,响应拦截器
11 
12 //请求拦截器
13 instance.interceptors.request.use(config => {
14   // 什么时候执行这里的代码??  在每个请求发出去之前
15   // config是什么?? 是一个对象 记录本次请求的相关信息
16   // console.log(config);
17   // 这个函数用来做什么??   可以用来做一些请求前的准备工作
18   // 比如:添加请求头
19 
20   // let token = xxxx;
21   // if (token) {
22   //   就在请求头中携带token
23   // }
24   return config
25 }, err => {
26   return Promise.reject(err)
27 })
28 
29 
30 // 响应拦截器
31 instance.interceptors.response.use(res => {
32   // 什么时候执行这里的代码??  后端返回响应,在进入到组件成功的回调函数之前执行
33   // res是什么?? 是一个对象 原先说的额axios封装的res对象
34   console.log(res);
35   // 这个函数用来做什么??   对服务器响应回来的数据做统一的处理
36   return res
37 }, err => {
38   return Promise.reject(err)
39 })
40 
41 export default instance

request 里面增加一个 api.js ,这个文件用来统一管理项目中的 api 链接

import instance from './request'
// 这个文件用来统一管理项目中的api链接

// 首页精品推荐的请求
//使用函数,避免请求的时候,在此文件中的所有请求都被请求一次
export const JingpinAPI = () => instance.get("/products/recommend")

在想引用的文件中引用 axios

// 加载模块
import {JingpinAPI} from "@/request/api.js";
    .
    .
    .
created() {
    // 后端设置了响应头,则不存在跨域问题
    // 一下代码作为案例还行,项目九不行,会有缺陷
    // 1 请求头写在哪儿??多个连接都要带请求头这么写??
    // 2 不便于接口的管理
    // 3 容易出现回调地狱
    // api.js中用的函数,在此就该调用的形式写
    JingpinAPI().then((res) => {
      console.log(res);
    });
  },

 

上一篇:[SpringBoot2]依赖管理


下一篇:6.axios