No.65 Vue---Axios 网络请求、Axios 网络的请求封装、网络请求跨域解决方案

news/2025/3/14 16:16:50/文章来源:https://www.cnblogs.com/bltstop/p/18771759

一、Axios 网络请求

  • Axios 是一个基于 promise 的网络请求库。

1.1 安装

  • ctrl + c :停止服务。

  •  安装:npm install -save axios
  • 安装完启动原来的服务:npm run serve

 

1.2 引入

  • 局部引用:

  • import axios from 'axios'; //局部引用
 
  • 全局引用:

 

1.3 get请求方式

    //get請求方式axios({method:"get",url:"https://www.cnblogs.com/bltstop"}).then(res =>{console.log(res.data);})

1.4 post 请求方式

 

 axios({method:"post",url:"http://iwenwiki.com/api/blueberrypai/login.php",data:qs.queryify({user_id:"zhangsan@qq.com",pwd:"12345678",verification_code:"cerf",})}).then(res =>{console.log(res.data);})

1.5 get和post 的快捷方式

 

 二、Axios 网络的请求封装

  • 在日常应用过程中,一个项目中的网络请求会很多,此时一般采取的方案是将网络请求封装起来。

step1:安装querystring  和axios

step2: 在src文件夹下创建文件夹utils,

step3 : 在utils文件夹下创建request.js文件。

 step5:在request.js 文件中写入代码

import axios from "axios"import querystring from "querystring"const errorHandle = (status,info) => {switch(status){case 400:console.log("语义有误");break;case 401:console.log("服务器认证失败");break;case 403:console.log("服务器拒绝访问");break;case 404:console.log("地址错误");break;case 500:console.log("服务器遇到意外");break;case 502:console.log("服务器无响应");break;default:console.log(info);break;}
}const instance = axios.create({//网络请求的公共配置timeout:5000
})//拦截器(最常用)
//发送数据之前
instance.interceptors.request.use(config =>{if(config.method === "post"){config.data = querystring.stringify(config.data)}//config:包含着网络请求的所有信息return config;},error =>{return Promise.reject(error);}
)//拦截器(最常用)
//发送数据之前
instance.interceptors.response.use(response =>{return response.status === 200 ? Promise.resolve(response) : Promise.reject(response);},error =>{const {response} = error;//错误的信息才是我们需要关注的errorHandle(response.status,response.info)}
)
export default instance;

  

step6:调用,src 文件夹下创建文件夹api, api文件夹下创建文件path.js 和index.js.

 step.7: 在path.js 中写入:

const base = {baseurl:"http://iwenwiki.com",chengpin:"/api/blueberrypai/getchengpinDetails.php"
}export default base;

 

step8 : 在index.js 文件中写入:

import axios from "../utils/request";
import path from "./path"const api = {//chengpin 地址getChengpin(){return axios.get(path.baseurl + path.chengpin)}
}export default api;

  

step9:在HelloWorld.vue中引用

<template><div class="hello"><h1>{{ msg }}</h1></div>
</template><script>
import api from '../api/index';export default {name: 'HelloWorld',props: {msg: String},mounted(){api.getChengpin().then(res =>{console.log(res.data);})}
}
</script><!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped></style>

  

三、网络请求跨域解决方案

3.1 JS采取的是同源策略

同源策略是浏览器的一项安全策略,浏览器只允许is 代码请求和当前所在服务器域名,端口,协议相同的数据接口上的数据,这就是同源策略.
也就是说,当协议、域名、端口任意一个不相同时,都会产生跨域问题,所以又应该如何解决跨域问题呢?

 

3.2 跨域错误提示信息

3.3 目前主流的跨域解决方案有两种:

  • 后台解决:cors

  • 前台解决:proxy

step1:找到文件vue.config.js

 

step2: 给文件中添加代码
const { defineConfig } = require('@vue/cli-service')
const { table } = require('console')
module.exports = defineConfig({transpileDependencies: true,
  devServer:{proxy: {'/api': {target: 'http://iwenwiki.com',changeOrigin:true}}}
})

  

 

step3:重启服务器
  • ctrl + c 
  • npm run serve

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898715.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的博客开启啦

由于微信访问限制,请长按识别下方二维码跳转下载

FastAPI复杂查询终极指南:告别if-else的现代化过滤架构

title: FastAPI复杂查询终极指南:告别if-else的现代化过滤架构 date: 2025/3/14 updated: 2025/3/14 author: cmdragon excerpt: 本文系统讲解FastAPI中复杂查询条件的构建方法,涵盖参数验证、动态过滤、安全防护等18个核心技术点。通过引入策略模式、声明式编程等技术,彻…

基于Ollama本地部署DeepSeek-r1:7b大语言模型

1、概述随着人工智能技术的飞速发展,越来越多的开发者和企业开始关注大语言模型(LLM)。这些模型以其强大的自然语言处理能力,在文本生成、问答、翻译、分类等多种任务中表现出色。然而,在实际使用中,许多人会遇到如何快速且高效地部署这些模型的问题。本文将介绍如何通过…

web116笔记(misc+lfi)

访问题目是一个视频,源码也没有什么有用信息 提示:misc+lfi 下载视频,使用 010editor 打开,发现存在 png 图片的数据,搜索另存为 过滤了蛮多的,不过没有过滤flag ,也没有过滤 filter 尝试构造语句?file=php://filter/resource=flag.php (直接读取) 如果没有设置 fil…

具身智能

Topic I: 3D VIsion Topic II: Robotics Topic IV: Reinforcement learning Linear Algebra Vector Space 向量空间Linear Combination 线性组合\(w=a_1v_1+a_2v_2+...+a_nv_n=\sum_i a_iv_i\)Span of Vectors\(v_i \in V_m\), \(w \in V_m\)Infinite-Ddimensional Vector Spac…

python的jieba

jieba 是一个广泛使用的 Python 中文分词库,主要用于将中文文本切分成独立的词语。 https://github.com/fxsjy/jieba 安装pip install jieba使用 (1)分词import jieba # 分词 text = "我爱自然语言处理" words = jieba.cut(text, cut_all=False) # 精确模式 prin…

3. 创建一个菜单组件-DeepSeek辅助编程

在deepseek中输入: 创建一个vue组件 组件实现菜单的功能 需要让调用该组件是可以自定义一些属性:mode:horizontal横向显示/vertical纵向显示,background-color,text-color,active-text-color,model:通过该model绑定菜单/model为MenuItem的数组 MenuItem由这些参数构成:inde…

微信支付相关配置

公众号相关配置 地址:https://mp.weixin.qq.com/一、获取用户openid相关配置 二、获取开发者ID(AppID)/开发者密码(AppSecret) 微信支付相关配置 地址:https://pay.weixin.qq.com/需要先申请开通支付产品微信支付相关参数获取: 一:获取商户号(商户号mach_id)三、获取证书…

华为开发者空间:基于DeepSeek+Cherry Studio构建模拟面试助手

通过实际操作,让开发者熟悉如何通过云主机部署DeepSeek,以及如何将DeepSeek与Cherry Studio结合起来帮助我们解决一些实际的问题。本文分享自华为云社区《华为开发者空间:基于DeepSeek+Cherry Studio构建模拟面试助手》,作者:开发者空间小蜜蜂。 1 案例介绍 CherryStudio …

​信创环境元宇宙应用:3种虚拟团队管理工具前瞻测评

随着信息技术的不断发展,信创环境下的元宇宙应用正逐渐成为各行业关注的焦点。在这个虚拟的世界中,虚拟团队的管理变得至关重要。本文将对三种虚拟团队管理工具进行前瞻测评,探讨它们在信创环境元宇宙应用中的优势和潜在挑战。 信创国产化项目管理解决方案 禅道是一款国产的…

VSCode+Linux+GCC编译运行数据结构的C语言程序集

背景 学习数据结构,写了很多C语言程序,这些C语言程序都保存在一个Git仓库中,以章节、实验内容为目录存放,形如:之前一直是通过gcc命令手动编译、运行,但随着程序逐渐复杂,希望简化构建过程,做到一键编译运行,同时支持断点调试。 环境VSCode,安装了C/C++扩展 Linux GC…