前后端分离,前端通过网关连接到后端多个微服务

本文介绍了前端项目如何通过网关实现与不同后端服务的通信,包括解决路径问题和跨域问题。通过创建网关微服务mall-gateway并配置路由规则,使得前端请求能正确转发到renren-fast和mall-product服务。同时,通过在网关添加CORS配置,解决了跨域问题,允许前端从不同域名进行请求。最后,调整了网关的路由配置,确保请求能准确到达目标服务。

项目介绍

  1. 前端项目 renren-fast-vue,baseurl 为 http://localhost:8080/renren-fast,默认连接到后端项目 renren-fast
  2. 后端项目 renren-fast,在端口 8080 启动
  3. 后端项目 mall-product,在端口 11000 启动

如果前端想请求后端项目 mall-product 提供的api,如何解决?

  1. 如想请求 http://localhost:11000/product/category/list/tree
  2. 需要修改前端 baseurl http://localhost:8080/renren-fasthttp://localhost:11000,这样的话,前端又会发生请求不到 renren-fast 项目下的 api
  3. 如果 mall-product 项目部署多份,分别在不同的端口启动,又怎么解决?

显然,前端请求的 baseurl 应该是一个公共路径。
那么,如何解决公共路径的问题呢?
此时,引入网关。让所有的请求,首先发送到网关,接着网关转发所有请求到相应的微服务即可。

网关微服务 mall-gateway

  1. 确保 renren-fast 和 mall-product 已经注册到注册中心 nacos 注册过程参考
  2. 创建 mall-gateway 微服务,并注册到注册中心,启动端口号 13000
  3. 修改 renren-fast-vue 前端项目的 baseurl 为 http://localhost:13000/api
  4. 解决路径问题
    1. 原来访问验证码的路径为:http://localhost:8080/renren-fast/captcha.jpg?uuid=98fcaea6-71d5-43e4-8ce3-e839de8912bf
    2. 通过网关,访问 renren-fast 后端项目,验证码的请求路径为http://localhost:13000/api/captcha.jpg?uuid=ee83f4f0-1bb8-4f0f-8f2e-d86d1ad305a7,显然访问不到,因为renren-fast后端项目在8080端口启动,并且路径为/renren-fast/captcha.jpg 而不是/api/captcha.jpg
    3. 在网关 mall-gateway 的 application.yml 增加如下配置,并重启网关微服务
      spring:
        application:
          name: mall-gateway
        cloud:
          nacos:
            discovery:
              server-addr: 127.0.0.1:8848
          gateway:
            routes:
              - id: admin_route
                uri: lb://renren-fast  # 路由到 renren-fast 后端项目, renren-fast为注册到nacos的名字
                predicates
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值