Rainbond 中Vue、React项目如何调用后端接口
Rainbond中怎么部署 Vue 、React 项目请参考 Rainbond部署Vue、React项目
前言
以往我们在部署前端项目后,调用后端接口有以下几种场景:
-
后端接口没有统一,比较分散,例如:
/system/user
,/tool/gen
。通常我们会在项目的全局配置文件
.env.production
中直接写入后端ip,例如:ENV = 'production' VUE_APP_BASE_API = '192.168.6.66:8080'
这样写虽可以正常访问,但会导致产生跨域问题。
-
后端接口统一,例如:
/api/system/user
,/api/tool/gen
。大部分小伙伴也还是同样会直接把IP + 后缀写入到项目全局配置文件,例如:
ENV = 'production' VUE_APP_BASE_API = '192.168.6.66:8080/api'
这样写当然了也会有跨域的问题。
那我们该怎么解决接口不统一或接口统一的跨域问题呢。
答:使用Nginx 反向代理。
大部分小伙伴用nginx都是项目打包完的dist
包丢进nginx,配置个 location proxy_pass 反向代理后端,然后在项目全局配置里填写Nginx
地址。酱紫还是会跨越哦😋。那究竟该怎么处理呢,请往下看👇
解决跨域对于不同的场景有以下几种方法:
接口没有统一
-
接口数量较少的话,比如只有几个接口
system
tool
moitor
login
getmenu
等。首先需要修改全局配置文件
.env.production
的请求api 为**/**,酱紫写前端发起请求的时候会直接转发到nginx。ENV = 'production' VUE_APP_BASE_API = '/'
其次修改Nginx配置文件,添加多个location,在浏览器请求的时候就会匹配到nginx的location规则,例如:
浏览器请求菜单:
http://192.168.6.66/getmenu
,会匹配 location /getmenu规则反向代理到后端。server { listen 5000; #静态页面 location / { root /app/www; try_files $uri $uri/ /index.html; index index.html index.htm; } location /getmenu{ proxy_pass http://127.0.0.1:8080/; } }
这种方式固然可以,但对于接口几十个上百个 一一配置很麻烦。
-
接口数量很多。
同样首先也需要修改全局配置文件
.env.production
,修改请求接口为 api,这个接口自定义的。有的小伙伴就疑问了,我没有这个接口呀,请接着往下看。ENV = 'production' VUE_APP_BASE_API = '/api'
紧接着修改Nginx配置文件,在nginx配置文件中添加了location /api,并且添加了 rewrite、proxy_pass,这个 rewrite是URL重写。
例如:请求
http://192.168.6.66/api/system/menu
,酱紫请求正常情况发送到后端,后端会报错是没有这个接口的。我们通过rewrite 重写URL,此时URL就会变成
http://192.168.6.66/system/menu
并且通过proxy_pass
反向代理到后端,此时发送接口请求/system/menu
,后端正常返回。server { listen 5000; location / { root /app/www; try_files $uri $uri/ /index.html; index index.html index.htm; } location /api { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://192.168.2.182:8080; } }
rewrite ^/api/(.*)$ /$1 break
具体可参考Nginx官方文档rewrite_module模块,在这里简单介绍下: rewrite ^/api/(.*)$ /$1 break
关键字 正则 替代内容 flag标记
接口统一
对于这种就比较好处理了。
同样首先也是修改项目的全局配置文件.env.production
,修改请求接口为 /prod-api。这个统一接口是后端提供的哈。
ENV = 'production' VUE_APP_BASE_API = '/prod-api'
修改Nginx配置文件,增加一条location,反向代理到后端地址。
此时在浏览器请求的URL则为:http://192.168.6.66/prod-api/system/menu
。
server { listen 5000; location / { root /app/www; try_files $uri $uri/ /index.html; index index.html index.htm; } location /prod-api { proxy_pass http://192.168.2.182:8080; } }
跨域问题解决了,那我们开始实践一次😁。
本次前端的配置就是上面说的接口统一的方式
接下来部署一个SpringBoot后端项目来配合前端一起使用。
源码部署后端
-
本项目源码地址
https://gitee.com/zhangbigqi/RuoYi-Vue.git
Fork开源项目 若依 -
后端是SpringBoot + Mysql + Redis 架构。
Dockerfile源码构建部署Mysql
参考博客文章Rainbond 中用 Dockerfile 便捷构建运行应用
-
通过Dockerfile源码构建部署Mysql。参考文档Dockerfile源码构建
Dockerfile源码构建需要在项目所需Sql目录放置
Dockerfile文件
自动初始化数据库。 Dockerfile文件可参考
https://gitee.com/zhangbigqi/RuoYi-Vue.git
此项目下的sql
目录 -
填写源码仓库地址,填写Mysql子目录
sql
,构建Mysql。 -
确认创建组件,平台会自动识别语言为 dockerfile。
-
创建,等待构建组件完成即可。
-
构建完成后,在组件 > 端口中打开对内服务并且修改
别名
,点击即可修改,改为MYSQL_HOST
,以供后端连接时使用。
Docker镜像部署Redis
-
通过 docker镜像部署redis,具体参考官方文档docker镜像构建
-
使用 redis 官方镜像,redis:latest
-
确认创建,平台会检测出来一些镜像信息,直接创建即可。
-
构建完成后,在组件 > 端口中打开对内服务。以供后端连接使用
Java源码构建部署 SpringBoot
-
这里提前修改了后端项目里的配置文件
ruoyi-admin/src/main/resources/application-druid.yml
连接数据库的配置,改为了环境变量连接,这里就用到了上面修改的端口别名。以及修改了ruoyi-admin/src/main/resources/application.yml
文件中的连接Redis配置# 主库数据源 master: url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/ry-vue? redis: # 地址 host: 127.0.0.1 # 端口,默认为6379 port: 6379
-
通过Java源码构建项目,具体参考官方文档JAVA源码构建
-
填写源码仓库地址,构建SpringBoot项目。
-
平台会根据项目根目录的
pom.xml
文件检测是什么项目,这里检测的是多模块项目。 -
进入多模块构建,勾选
ruoyi-admin
模块,此模块是可运行的,其他模块都是依赖。具体模块功能参考若依官方文档 -
可修改Maven构建参数,无特殊要求无需修改。
-
确认创建,等待构建完成。
这里需要注意,平台默认使用openjdk ,此项目需要使用oraclejdk来生成前端验证码。
需要在
组件 > 构建源
中修改JDK类型
为自定义JDK,填写自定义JDK下载路径。自定义JDK下载地址:https://buildpack.oss-cn-shanghai.aliyuncs.com/jdk/jdk1.8.0.tgz
-
需要打开 禁用缓存按钮,防止包不一样出现奇奇怪怪的问题。构建成功后再把禁用缓存关闭,下次构建就缓存正确的包了。
-
修改后 保存修改。构建组件,等待构建完成,修改端口为
8080
。 -
进入拓扑图界面,切换为编辑模式,建立组件依赖关系。
- **ruoyi-ui **连接 ruoyi-admin。
- **ruoyi-admin **连接 Mysql、Redis。
-
更新组件
ruoyi-ui
ruoyi-admin
,至此完成。 -
最终效果,拓扑图:
- 页面效果:
Rainbond 云原生应用管理平台,实现微服务架构不用改代码,管理 Kubernetes 不用学容器,帮企业实现应用上云,一站式将任何企业应用持续交付到 Kubernetes 集群、混合云、多云等基础设施。是 Rainstore 云原生应用商店的支撑平台。
本文作者:张齐

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Serverless 在编程教育中的实践
说起Serverless这个词,我想大家应该都不陌生,那么Serverless这个词到底是什么意思?Serverless到底能解决什么问题?可能很多朋友还没有深刻的体会和体感,这篇文章我就和大家一起聊聊Serverless。 什么是Serverless 我们先将Serverless这个词拆开来看。Server,大家都知道是服务器的意思,说明Serverless解决的问题范围在服务端。Less,大家肯定也知道它的意思是较少的。那么Serverless连起来,再稍加修饰,那就是较少的关心服务器的意思。 Serverfull时代 我们都知道,在研发侧都会有研发人员和运维人员两个角色,要开发一个新系统的时候,研发人员根据产品经理的PRD开始写代码开发功能,当功能开发、测试完之后,要发布到服务器。这个时候开始由运维人员规划服务器规格、服务器数量、每个服务部署的节点数量、服务器的扩缩容策略和机制、发布服务过程、服务优雅上下线机制等等。这种模式是研发和运维隔离,服务端运维都由专门的运维人员处理,而且很多时候是靠纯人力处理,也就是Serverfull时代。 DevOps时代 互联网公司里最辛苦的是谁?...
- 下一篇
编写高质量可维护的代码:异步优化
👆 这是第 77 篇 不掺水的原创 ,想要了解更多 ,请戳上方蓝色字体: 政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:编写高质量可维护的代码——异步优化 https://www.zoo.team/article/asynchronization-optimizing 前言 在现在前端开发中,异步操作的频次已经越来越高了,特别对于数据接口请求和定时器的使用,使得我们不得不关注异步在业务中碰到的场景,以及对异步的优化。错误的异步处理可能会带来很多问题,诸如页面渲染、重复加载等问题。 下面我们就先简单的从 JavaScript 中有大致的哪几种异步类型为切入点,然后再列举一些业务中我们会碰到的场景来逐个分析下,我们该如何解决。 异步实现种类 首先关于异步实现的方式上大致有如下几种: callback callback 即回调函数。这家伙出现很早很早了,他其实是处理异步的基本方法。并且回调的概念不单单出现在 JavaScript,你也会在 Java 或者 C# 等后端语言中也能找到他的影子。 回调函数简单的说其实就是给另外一个寄主函数作为传参的函数。在寄主函数执行完成或者执行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案