網站首頁 編程語言 正文
一、Gateway網關簡介
API 網關是介于客戶端和服務器端之間的中間層,所有的外部請求都會先經過API 網關這一層。也就是說,API 的實現方面更多的考慮業務邏輯,而安全、性能、監控可以交由 API 網關來做,這樣既提高業務靈活性又不缺安全性。
Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技術開發的網關,Spring Cloud Gateway旨在為微服務架構提供簡單、有效和統一的API路由管理方式,Spring Cloud Gateway作為Spring Cloud生態系統中的網關,目標是替代Netflix Zuul,其不僅提供統一的路由方式,并且還基于Filer鏈的方式提供了網關基本的功能,例如:安全、監控/埋點、限流等。
二、Gateway使用步驟
步驟1:搭建模塊并引入依賴
在項目中使用Maven模塊,搭建server-gateway模塊。
由于Gateway也需要在Nacos中進行注冊,所以在引入Gateway依賴的同時,也要引入Naocs依賴。
<!--Gateway--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- 服務注冊 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
步驟2:添加配置文件
下面的配置表示將網關服務端口設置為9000后,配置了兩個路由id:
# 服務端口
server.port=9000
# 服務名
spring.application.name=service-gateway
# nacos服務地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#使用服務發現路由
spring.cloud.gateway.discovery.locator.enabled=true
#設置路由id
spring.cloud.gateway.routes[0].id=service-hosp
#設置路由的uri
spring.cloud.gateway.routes[0].uri=lb://service-hosp
#設置路由斷言,代理servicerId為auth-service的/auth/路徑
spring.cloud.gateway.routes[0].predicates= Path=/*/hosp/**
#設置路由id
spring.cloud.gateway.routes[1].id=service-cmn
#設置路由的uri
spring.cloud.gateway.routes[1].uri=lb://service-cmn
#設置路由斷言,代理servicerId為auth-service的/auth/路徑
spring.cloud.gateway.routes[1].predicates= Path=/*/cmn/**
步驟3:創建啟動類
@SpringBootApplication
public class ServerGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ServerGatewayApplication.class, args);
}
}
網關初步測試
后端服務配置好后啟動相應微服務,在前端dev.env.js文件中,也將端口設置為9000與后端對應:
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BASE_API: '"http://localhost:9000"',
})
關閉之前配置的Nginx,在不同端口之前發送請求,都可以成功訪問:
三、Gateway解決跨域問題
在service_gateway模塊創建配置類,寫入下面的內容:
@Configuration
public class CorsConfig {
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
}
配置好后,將之前項目中所有Controller中的@CrossOrigin注解刪除掉。
再次啟動后端微服務和前端項目,切換不同選項卡,發現跨域問題被成功解決掉:
原文鏈接:https://guoqianliang.blog.csdn.net/article/details/116268657
相關推薦
- 2022-05-18 python基礎教程之csv格式文件的寫入與讀取_python
- 2022-03-15 Golang 發送http請求工具
- 2023-07-22 BeanFactory和FactoryBean區別
- 2022-04-22 Spring AOP 在注解上使用SPEL表達式注入對象
- 2022-04-03 Python中bytes字節串和string字符串之間的轉換方法_python
- 2022-07-09 android開機自動啟動app的解決方法_Android
- 2022-05-29 Python格式化字符串的案例方法_python
- 2022-10-20 Python?BautifulSoup?節點信息_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支