·springCloudAlibaba微服务中你的每个微服务端口都是不一样的 但是呢你的前端像vue进行跨域请求的话那应该怎么办呢 难道你的vue中调用了多少个微服务就需要多少份的配置文件吗 那这不久属于工业垃圾了吗 这明显是属于不现实的 当然阿里在开发这个的时候肯定也想到了这个问题 所以这就引入了一个网关的概念
网关又是什么呢
所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服
务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等等 网关的话我个人的理解是一个大型的web过滤器差不多(纯属个人观点)
我使用的是比较常用的一个网关:Gateway
快速创建子模块gateway-service(网关) 并引入pom文件
<dependencies> <!-- 引入pom文件时最好不要引入mvc的一个pom 不然会出现错误--> <!-- 服务注册与发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.1</version> </dependency> <!-- 服务网关--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>3.0.1</version> </dependency>
<!-- 网关访问微服务503请求--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer</artifactId> <version>3.0.1</version> </dependency>
</dependencies>
快速创建对应的软件包及其启动类快速加入注解
@EnableDiscoveryClient @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }
创建并配置启动yml文件 application.yml 在此文件中最好不要做过多配置 可能会出现错误
spring: application: # 注册服务名 name: account-service cloud: nacos: discovery: # 远程nacos地址 server-addr: 119.23.54.178:8848 gateway: discovery: locator: # 开启注册中心路由功能 # 作用:可以直接使用微服务的名称代替 ip:端口 enabled: true routes: # 配置的微服务 - id: account-service # lb(loadbalancer)是保证你的负载均衡还能够生效 uri: lb://account-service # 断言进行判断 必须存在 用于判断进入哪个微服务 predicates: - Path=/account-service/** # 过滤器 filters: # 作用为去掉部分url 将/account-service/ 去掉 - StripPrefix=1 # user - id: user-service uri: lb://user-service predicates: - Path=/user-service/** filters: - StripPrefix=1 # record - id: record-service uri: lb://record-service predicates: - Path=/record-service/** filters: - StripPrefix=1 server: port: 8888
随后直接启动你的网关进行访问 这样一来你微服务的授权及过滤就完成了