当前位置: 首页 > news >正文

Vue发送http请求

1.创建项目

创建一个新的 Vue 2 项目非常简单。在终端中,进入您希望创建项目的目录(我的目录是D:\vue),并运行以下命令:

vue create vue_test

 2.切换到项目目录,运行项目

 

运行成功后,你将会看到以下的编译成功的提示,并显示本地和局域网的访问地址

并使用VS Code打开项目,项目的目录结果如下:

在node.js的目录下安装axios,输入如下的命令

安装成功后会带有"added"的提示 

你可以在Vue组件中使用axios发送请求。以下是一个简单的例子,在App.vue中输入以下代码:

<template><div><button @click="fetchData">Fetch Data</button><div v-if="data">Fetched Data: {{ data }}</div></div>
</template><script>
import axios from 'axios';export default {data() {return {data: null,};},methods: {fetchData() {axios.get('http://192.168.110.174:30000/test/say').then(response => {this.data = response.data;}).catch(error => {console.error('There was an error!', error);});},},
};
</script>

 单击页面上的“Fetch Data”按钮,按钮下面显示"Fetched Data:say my brother",观察chrom浏览器的NetWork显示发送请求成功了

到此,一个简单的Vue发送get请求的实例就完成了 

3.遇到的问题

访问本地的接口出现了跨域问题

3.1解决方案:

3.1.1后端方案

以SpringBoot项目为例

package com.health.manage.config;import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@Component
public class SimpleCORSFilter implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletRequest reqs = (HttpServletRequest) req;String curOrigin = reqs.getHeader("Origin");HttpServletResponse response = (HttpServletResponse) res;response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin);response.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");response.setContentType("application/json;charset=UTF-8");chain.doFilter(req, res);}public void init(FilterConfig filterConfig) {}public void destroy() {}}
3.1.2.前端方案

(1)在vue.config.js中设置代理,如下所示:

module.exports = {devServer: {proxy: {'/api': { // 请求的代称,写在Axios里的BaseUrltarget: 'http://192.168.110.174:30000', // 真实请求URlws: true,changeOrigin: true, // 允许跨域pathRewrite: { //替换,通配/api的替换成对应字符//     /* 重写路径,当我们在浏览器中看到请求的地址为:http://localhost:8080/api/core/getData/userInfo 时//       实际上访问的地址是:http://localhost:8088/spring/core/getData/userInfo,因为重写了 /api//      */'^/api': '' //当你的接口中没有/api字眼时,采用这种,直接替换成空即可//     '^/api': '/api'   //当你的接口中刚好有/api 时,采用这种方式}}}}
}

 (2)在main.js中输入全局路径:Vue.prototype.HOST = '/api';

import Vue from 'vue'
import App from './App.vue'Vue.config.productionTip = false
Vue.prototype.HOST = '/api';new Vue({render: h => h(App),
}).$mount('#app')

(3)在App.vue中设置get请求

<template><div><button @click="fetchData">Fetch Data</button><div v-if="data">Fetched Data: {{ data }}</div></div>
</template><script>
import axios from 'axios';export default {data() {return {data: null,};},methods: {fetchData() {axios.get(this.HOST+'/test/say').then(response => {this.data = response.data;}).catch(error => {console.error('There was an error!', error);});},},
};
</script>

(4)由于使用了代理,页面访问的是http://localhost:8080/api/test/say,实际访问的是http://192.168.110.174:30000/test/say,完美解决了跨域问题

相关文章:

  • 计算机网络之TCP的三次握手和四次挥手
  • webpack 中 require.context() 的用法
  • 力扣刷题笔记
  • Redis连接池配置:深入探索JedisPoolConfig
  • create-react-app创建的项目中设置webpack配置
  • 【科技前沿】电子设计新贵SmartEDA:为何它引领行业风潮?
  • 物联网 IoT 收录
  • 等保测评练习10
  • 程序员系统入门大模型的路径和资源,看这篇就够了
  • 道路救援小程序源码
  • 把sql拿到数据库中执行,和程序返回的值不一样??????
  • 深度学习工具jupyter的new没有环境选项以及遇到的EnvironmentLocationNotFound:Not such a environment
  • Nginx实现动静分离
  • 赋能AI未来,景联文科技推出高质量亿级教育题库、多轮对话以及心理大模型数据
  • 信息检索(53):Document Expansion by Query Prediction
  • 网络传输文件的问题
  • 收藏网友的 源程序下载网
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2019年如何成为全栈工程师?
  • 30秒的PHP代码片段(1)数组 - Array
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Angular 响应式表单之下拉框
  • CentOS7 安装JDK
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • echarts的各种常用效果展示
  • Fastjson的基本使用方法大全
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript学习总结——原型
  • js数组之filter
  • learning koa2.x
  • React+TypeScript入门
  • 初识 webpack
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 日剧·日综资源集合(建议收藏)
  • 使用 Docker 部署 Spring Boot项目
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #07【面试问题整理】嵌入式软件工程师
  • #100天计划# 2013年9月29日
  • #13 yum、编译安装与sed命令的使用
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • %@ page import=%的用法
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十) 初识 Docker file
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (一)Linux+Windows下安装ffmpeg
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .stream().map与.stream().flatMap的使用
  • /etc/motd and /etc/issue