当前位置: 首页 > 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,完美解决了跨域问题

http://www.lryc.cn/news/377245.html

相关文章:

  • 学习使用js和jquery修改css路径,实现html页面主题切换功能
  • (转)请介绍一下Redis的数据淘汰策略
  • APP自动化测试-Appium常见操作之详讲
  • 写给大数据开发:谈谈数仓建模的反三范式
  • Stable diffusion 3 正式开源
  • 如何配置node.js环境
  • python tensorflow 各种神经元
  • Gone框架介绍27 - 再讲 Goner 和 依赖注入
  • 【Python/Pytorch 】-- 滑动窗口算法
  • Clickhouse集群create drop database可删除集群数据库或只删除本地数据库
  • 【docker】adoptopenjdk/openjdk8-openj9:alpine-slim了解
  • Vscode interaction window
  • 后端数据null前端统一显示成空
  • 【设计模式深度剖析】【9】【行为型】【访问者模式】| 以博物馆的导览员为例加深理解
  • Salesforce‘s 爱因斯坦机器人助手引领工业聊天机器人时代
  • Day7—zookeeper基本操作
  • 计算机组成原理---Cache的基本工作原理习题
  • springboot项目中切数据库(mysql-> pg)带来的适配问题:typeHandler
  • 从零开始的<vue2项目脚手架>搭建:vite+vue2+eslint
  • Hadoop升级失败,File system image contains an old layout version -64
  • [机器学习算法]决策树
  • springboot应用cpu飙升的原因排除
  • 反激开关电源EMI电路选型及计算
  • vue3前端对接后端的图片验证码
  • 【Unity】RPG2D龙城纷争(四)要诀、要诀数据集
  • 一种基于非线性滤波过程的旋转机械故障诊断方法(MATLAB)
  • HarmonyOS Next 系列之从手机选择图片或拍照上传功能实现(五)
  • 如果xml在mapper目录下,如何扫描到xml
  • 什么是无限铸币攻击?它是如何运作的?
  • 【Android】怎么使APP进行开机启动