• 微服务项目:尚融宝(33)(服务调用(3))


    放弃幻想,认清现实,准备斗争

    微服务网关

    一、创建模块service-gateway

    1、创建模块

    在srb下创建普通maven模块

    Artifact:service-gateway

    2、配置pom

    在api-gateway的pom中添加如下依赖
    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.cloudgroupId>
    4. <artifactId>spring-cloud-starter-gatewayartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>com.alibaba.cloudgroupId>
    8. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    9. dependency>
    10. dependencies>

    3、配置application.yml

    1. server:
    2. port: 80 # 服务端口
    3. spring:
    4. profiles:
    5. active: dev # 环境设置
    6. application:
    7. name: service-gateway # 服务名
    8. cloud:
    9. nacos:
    10. discovery:
    11. server-addr: localhost:8848 # nacos服务地址
    12. gateway:
    13. discovery:
    14. locator:
    15. enabled: true # gateway可以发现nacos中的微服务,并自动生成转发路由

    4、logback.xml

    修改日志输出目录名为 gateway

    5、创建启动类

    1. @SpringBootApplication
    2. @EnableDiscoveryClient
    3. public class ServiceGatewayApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(ServiceGatewayApplication.class, args);
    6. }
    7. }

    6、启动网关

    注意:因为nginx和网关同时使用了80端口,因此先停止nginx,然后再启动网关
    nginx.exe -s stop

    二、路由配置

    1、基本配置

    application.yml文件中添加路由配置

    1. #spring:
    2. # cloud:
    3. # gateway:
    4. routes:
    5. - id: service-core
    6. uri: lb://service-core
    7. predicates:
    8. - Path=/*/core/**
    9. - id: service-sms
    10. uri: lb://service-sms
    11. predicates:
    12. - Path=/*/sms/**
    13. - id: service-oss
    14. uri: lb://service-oss
    15. predicates:
    16. - Path=/*/oss/**

    三、跨域配置

    1、配置文件

    在 api-gateway中添加跨域配置

    1. @Configuration
    2. public class CorsConfig {
    3. @Bean
    4. public CorsWebFilter corsFilter() {
    5. CorsConfiguration config = new CorsConfiguration();
    6. config.setAllowCredentials(true); //是否允许携带cookie
    7. config.addAllowedOrigin("*"); //可接受的域,是一个具体域名或者*(代表任意域名)
    8. config.addAllowedHeader("*"); //允许携带的头
    9. config.addAllowedMethod("*"); //允许访问的方式
    10. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    11. source.registerCorsConfiguration("/**", config);
    12. return new CorsWebFilter(source);
    13. }
    14. }

    2、删除后端跨域配置

    删除微服务中的跨域注解 @CrossOrigin

    今日bug

    failed to req API:localhost:8848/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException

    解决

    1、检查nacos有没有开启

    2、检查nacos开启是否正常

    3、nacos和eureka不一样,eureka是项目的一部分,nacos更像是合作伙伴的关系,新手容易忽略

     

    如果nacos正常开启了,重新启动项目,还是不行

    (1)检查注解@EnableDiscoveryClient

    (2)检查配置文件

  • 相关阅读:
    剑指 Offer 25. 合并两个排序的链表
    【PyCharm Community Edition】:打印日志保存成文档
    博世XC事业部李胤:自动驾驶降温不意外,但这条路肯定会走下去
    力扣第435题 无重叠区间 c++ 贪心思维
    近几天接触的自动化框架,支持Android、Web和Windows
    户外运动耳机推荐、这几款耳机专为户外运动而生
    通过 Prometheus 编写 TiDB 巡检脚本(脚本已开源,内附链接)
    Qt5开发从入门到精通——第六篇三节( 图像与图片——双缓冲机制)
    免费数据 | 新库上线 | CnOpenData中国保险中介机构网点全集数据
    UMA 2 - Unity Multipurpose Avatar☀️二.概念介绍
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/126817446