SpringCloud中的gateWay (网关)

本文详细介绍Spring Cloud Gateway的搭建与配置,包括网关服务创建、依赖引入、路由规则设定及异常处理等关键步骤,助您快速掌握微服务网关的部署与使用。

一、网关基本概念

在这里插入图片描述
在这里插入图片描述

Gateway9527搭建

1、API网关介绍
2、Spring Cloud Gateway
3、Spring Cloud Gateway核心概念

二、创建api-gateway模块(网关服务)

1、在创建api_gateway网关模块(springboot)

注意:很重要

所有服务,都需要在nacos中注册服务(包括网关)

2、在pom.xml引入依赖

注意版本号,不要映入web 会报错

 <dependencies>
   <!--服务注册nacos-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
<!--gateway网关-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
   
     <!--谷歌gson-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
</dependencies>

3、编写application.properties配置文件

网关服务端口

server.port=8222

1.application.properties

# 网关服务端口
server.port=8222
# 服务名
spring.application.name=service-gateway

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#使用服务发现路由
spring.cloud.gateway.discovery.locator.enabled=true

#定义规则相当于Nginx
# 0 是当前模块
#设置路由id 理论上随便写,建议用服务名
spring.cloud.gateway.routes[0].id=service-acl
#设置路由的uri   lb://nacos注册服务名称
spring.cloud.gateway.routes[0].uri=lb://service-acl
#设置路由断言,匹配规则,代理servicerId为auth-service的/auth/路径
spring.cloud.gateway.routes[0].predicates= Path=/*/acl/**

#1 是 service-edu
#配置service-edu服务
spring.cloud.gateway.routes[1].id=service-edu
spring.cloud.gateway.routes[1].uri=lb://service-edu
spring.cloud.gateway.routes[1].predicates= Path=/teacher/**
#2
#3
#4
#5
#6
#.....

2.yml文件:

在这里插入图片描述
在这里插入图片描述

路由的配置方式 第二种方式在java代码 中配置

在这里插入图片描述
在这里插入图片描述

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class GateWayConfig
{
   
   
    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder routeLocatorBuilder)
    {
   
   
        RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
        /**
        * routes:
        *  - id: path_route_atguigu
        *    uri: http://news.baidu.com/guonei
        *    predicates:
        *     - Path=/guonei # 路径匹配
        **/
        routes.route("path_route_atguigu",//id
                r -> r.path("/guonei")//predicate断言
                        .uri("http://news.baidu.com/guonei"))//路由
                        .build();

        return routes.build();
    }
}

缺少注册服务名spring: application: name: shop-gateway 记得加上在这里插入图片描述

server:
  port: 8222
spring:
  application:
  cloud:
    gateway:
      discovery:
        locator:
          e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzhSWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值