Rainbond 中Vue、React项目如何调用后端接口

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 本文介绍Vue、React等前端项目在Rainbond中如何实现对后端API的调用。

前言

以往我们在部署前端项目后,调用后端接口有以下几种场景:

  1. 后端接口没有统一,比较分散,例如:/system/user,/tool/gen

    通常我们会在项目的全局配置文件 .env.production中直接写入后端ip,例如:

    ENV = 'production'
    VUE_APP_BASE_API = '192.168.6.66:8080'

    这样写虽可以正常访问,但会导致产生跨域问题

  2. 后端接口统一,例如:/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地址。酱紫还是会跨越哦😋。那究竟该怎么处理呢,请往下看👇

解决跨域对于不同的场景有以下几种方法:

接口没有统一

  1. 接口数量较少的话,比如只有几个接口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/;
          }
      }

    这种方式固然可以,但对于接口几十个上百个 一一配置很麻烦。

  2. 接口数量很多。

    同样首先也需要修改全局配置文件.env.production,修改请求接口为 api,这个接口自定义的。有的小伙伴就疑问了,我没有这个接口呀,请接着往下看。

    ENV = 'production'
    VUE_APP_BASE_API = '/api'

    紧接着修改Nginx配置文件,在nginx配置文件中添加了location /api,并且添加了 rewriteproxy_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

  1. 通过Dockerfile源码构建部署Mysql。

    ​ Dockerfile源码构建需要在项目所需Sql目录放置Dockerfile文件自动初始化数据库。

    ​ Dockerfile文件可参考https://gitee.com/zhangbigqi/RuoYi-Vue.git 此项目下的 sql 目录

  2. 填写源码仓库地址,填写Mysql子目录 sql,构建Mysql。
  3. 确认创建组件,平台会自动识别语言为 dockerfile
  4. 创建,等待构建组件完成即可。
  5. 构建完成后,在组件 > 端口中打开对内服务并且修改 别名,点击即可修改,改为MYSQL_HOST,以供后端连接时使用。

Docker镜像部署Redis

  1. 通过 docker镜像部署redis
  2. 使用 redis 官方镜像,redis:latest
  3. 确认创建,平台会检测出来一些镜像信息,直接创建即可。
  4. 构建完成后,在组件 > 端口中打开对内服务。以供后端连接使用

Java源码构建部署 SpringBoot

  1. 这里提前修改了后端项目里的配置文件 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
  2. 通过Java源码构建项目
  3. 填写源码仓库地址,构建SpringBoot项目。
  4. 平台会根据项目根目录的 pom.xml 文件检测是什么项目,这里检测的是多模块项目。
  5. 进入多模块构建,勾选ruoyi-admin模块,此模块是可运行的,其他模块都是依赖。具体模块功能参考若依官方文档
  6. 可修改Maven构建参数,无特殊要求无需修改。
  7. 确认创建,等待构建完成。

    ​ 这里需要注意,平台默认使用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 连接 MysqlRedis
  • 更新组件ruoyi-ui ruoyi-admin,至此完成。
  • 最终效果,拓扑图:

tuoputu

  • 页面效果:

ym


Rainbond 云原生应用管理平台,实现微服务架构不用改代码,管理 Kubernetes 不用学容器,帮企业实现应用上云,一站式将任何企业应用持续交付到 Kubernetes 集群、混合云、多云等基础设施。是 Rainstore 云原生应用商店的支撑平台。

1. Rainbond 官网

2. Rainbond 安装使用

3. Rainbond 参考手册全集


本文作者:张齐

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
28天前
|
JavaScript NoSQL Redis
Vue中实现修改邮箱、手机号等流程的大致过程、验证码由后端的redis生成验证(版本1.0)
这篇文章记录了在Vue中实现修改手机号和邮箱的大致流程,包括使用过滤器部分隐藏展示的手机号和邮箱,以及通过点击触发路由跳转的便捷方式。文章还描述了旧号码和新号码验证的界面实现,其中验证码由后端生成并通过弹窗展示给用户,未来可以接入真正的手机验证码接口。此外,还提供了修改邮箱的页面效果截图,并强调了学习是一个永无止境的过程。
Vue中实现修改邮箱、手机号等流程的大致过程、验证码由后端的redis生成验证(版本1.0)
|
16天前
|
XML JavaScript 前端开发
Vue和React有什么区别
【8月更文挑战第28天】Vue和React有什么区别
109 0
|
1月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
17天前
|
存储 运维 小程序
后端开发零负担!揭秘支付宝小程序云开发的高效与安全,你的项目也能飞速上线?
【8月更文挑战第27天】支付宝小程序云开发是由阿里云提供的集成开发环境,助力开发者高效、安全地构建小程序后端服务,免去服务器搭建,显著提高开发效率并降低运维成本。它集成了云函数、云数据库及云存储等功能,便于快速搭建后端逻辑。例如,仅需简单几行代码即可创建HTTP接口或进行数据管理。这使得开发者能更专注于业务逻辑和用户体验优化,同时平台还提供了强大的安全保障措施,确保数据安全和用户隐私。无论对于初创团队还是成熟企业,支付宝小程序云开发都能有效提升产品迭代速度和市场竞争力。
41 1
|
25天前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
28天前
|
JavaScript 前端开发
Vue中传递自定义参数到后端、后端获取数据(使用Map接收参数)
这篇文章讲述了如何在Vue中通过Axios二次封装传递自定义参数到后端,并展示了后端如何使用Map接收这些参数,以及如何避免参数转换错误和统一接口设计的方法。
|
1月前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
12天前
|
前端开发 Java Spring
Spring与Angular/React/Vue:当后端大佬遇上前端三杰,会擦出怎样的火花?一场技术的盛宴,你准备好了吗?
【8月更文挑战第31天】Spring框架与Angular、React、Vue等前端框架的集成是现代Web应用开发的核心。通过RESTful API、WebSocket及GraphQL等方式,Spring能与前端框架高效互动,提供快速且功能丰富的应用。RESTful API简单有效,适用于基本数据交互;WebSocket支持实时通信,适合聊天应用和数据监控;GraphQL则提供更精确的数据查询能力。开发者可根据需求选择合适的集成方式,提升用户体验和应用功能。
42 0
|
18天前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
27 0
|
18天前
|
JSON API 数据安全/隐私保护
Django 后端架构开发:JWT 项目实践与Drf版本控制
Django 后端架构开发:JWT 项目实践与Drf版本控制
31 0

热门文章

最新文章