有些情况下,我们希望不直接访问后端地址,这个时候可以通过springgateway网关进行处理。下面只是一个简单的例子。
至于URL,变化,我们可以通过编写程序逻辑来实现。
实现步骤:
1.新建项目
pom.xml 文件如下 。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>gatewaydemo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <spring-boot-dependencies.version>2.3.12.RELEASE</spring-boot-dependencies.version> <spring-cloud-dependencies.version>Hoxton.SR12</spring-cloud-dependencies.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot-dependencies.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud-dependencies.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
2.新建主程序
package com.redxun; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class JpaasGatewayServer { public static void main(String[] args) { SpringApplication.run(JpaasGatewayServer.class, args); } }
3.增加路由配置
这个我们可以通过java程序或者路由配置来实现。
package com.redxun.config; 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.route("baidu_news_guonei_routh", r -> { return r.path("/guonei").uri("https://news.baidu.com/guonei"); }); routes.route("baidu_news_guoji_routh", r -> { return r.path("/guoji").uri("http://news.baidu.com/guoji"); }); return routes.build(); } }
这个代码配置了 当 通过网关 访问 /guonei 地址时,请求会转发到 https://news.baidu.com/guonei
4.增加属性配置
application.yml
server: port: 9908 spring: application: name: jpaas-gateway-server management: endpoints: web: exposure: include: '*' metrics: tags: application: ${spring.application.name}
5.效果如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2019-10-17 VUE 直接通过JS 修改html对象的值导致没有更新到数据中去
2018-10-17 springboot 程序发布到tomcat运行
2010-10-17 activemq 代码库