当前位置:   article > 正文

Vue使用axios发送请求_vue2配置axios请求本机

vue2配置axios请求本机

目录

一、前言

二、axios前期配置

三、封装请求和响应

四、封装公共的api

四、调用请求


一、前言

在做vue中大型项目的时候,官方推荐使用axios,但是原生的axios可能对项目的适配不友好,所以,在工程开始的来封装一下axios,保持全项目数据处理的统一性。此文主要讲在vue-cil项目中如何封装axios,封装请求,封装公共的api,页面如何调用请求。

二、axios前期配置

1、下载axios

npm i axios -S

2、在main.js里面导入axios

  1. //main.js
  2. import axios from "axios";

3、 在vue.config.js中添加代理配置,进行跨域配置也是在这。(适用于vue2,vue3自行测试)

  1. const { defineConfig } = require('@vue/cli-service')
  2. module.exports={
  3. devServer:{
  4. host:'localhost',
  5. port:8081,
  6. proxy: {
  7. '/':{
  8. //websocket
  9. ws:false,
  10. //目标地址
  11. target:'http://localhost:8080',
  12. //发送请求头host会被设置target
  13. changeOrigin:true,
  14. //不重写请求地址
  15. pathRewrite:{
  16. '^/':'/'
  17. }
  18. }
  19. }
  20. }
  21. }

三、封装请求和响应

1、新建一个untils文件夹,并创建一个request.js

2、在request.js中写入以下代码,对请求与响应进行封装

  1. import axios from 'axios';
  2. // 创建 Axios 实例
  3. const request = axios.create({
  4. baseURL: '',
  5. timeout: 5000
  6. });
  7. // 请求拦截器
  8. request.interceptors.request.use(config => {
  9. //设置请求内容格式
  10. config.headers['Content-Type'] = 'application/json;charset=utf-8';
  11. /* //设置token
  12. let user=localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")):null
  13. if(user){
  14. config.headers['token'] = user.token; // 设置请求头
  15. }
  16. console.log(user)
  17. */
  18. return config;
  19. }, error => {
  20. return Promise.reject(error);
  21. });
  22. // 响应拦截器
  23. request.interceptors.response.use(
  24. response => {
  25. let res = response.data;
  26. if (response.config.responseType === 'blob') {
  27. return res;
  28. }
  29. if (typeof res === 'string') {
  30. res = res ? JSON.parse(res) : res;
  31. }
  32. return res;
  33. },
  34. error => {
  35. console.log('err' + error);
  36. return Promise.reject(error);
  37. }
  38. );
  39. export default request;

四、封装公共的api

我们常规的请求有get、post、delete、put。如果我们封装这类公共的api,那我们每次在发送请求的格式就会如下

  1. //以要请求后端地址为http://localhost:8080/root/login为例
  2. request.get(http://localhost:8080/root/login,param).then(resp=>{
  3. if(resp.data.message==="success"){
  4. ...... //对响应内容的处理
  5. ......
  6. }
  7. })

这时,如果每个请求都这样写,就会麻烦很多,所以我们可以对这类公共的api进行封装。可以将代码放在request.js的下面。代码如下

  1. // 封装不同类型请求
  2. export const postRequest = (url, params) => {
  3. return request({
  4. method: 'post',
  5. url: `${url}`,
  6. data: params
  7. });
  8. };
  9. export const getRequest = (url) => {
  10. return request({
  11. method: 'get',
  12. url: `${url}`
  13. });
  14. };
  15. export const deleteRequest = (url, params) => {
  16. return request({
  17. method: 'delete',
  18. url: `${url}`,
  19. data: params
  20. });
  21. };
  22. export const putRequest = (url, params) => {
  23. return request({
  24. method: 'put',
  25. url: `${url}`,
  26. data: params
  27. });
  28. };

四、调用请求

通过对上面的封装,大大简化了我们的请求操作,现在的发送请求代码格式如下

  1. //以要请求后端地址为http://localhost:8080/root/login为例
  2. postRequest('/root/login',this.login).then(resp=>{
  3. if(resp.message==="success"){
  4. ..... //对响应内容进行处理
  5. })
  6. //url地址直接为/root/login是因为在第一步代理配置那里将http://localhost:8080转化成/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/994151
推荐阅读
相关标签
  

闽ICP备14008679号