zoukankan      html  css  js  c++  java
  • 微服务网关3-配置路由和跨域

    一、基本配置

    1、路由和断言

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

    • -:表示数组元素,可以配置多个节点
    • id:配置的唯一标识,可以和微服务同名,也可以起别的名字,区别于其他 Route。
    • uri:路由指向的目的地 uri,即客户端请求最终被转发到的微服务。
    • predicates:断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。
    • Path:路径形式的断言。当匹配这个路径时,断言条件成立
    • /**:一个或多个层次的路径
    #spring:
      cloud:
        gateway:
          routes:
          - id: service-edu
            uri: http://localhost:8110
            predicates:
            - Path=/user/**
    

    2、测试网关路由转发

    访问:http://localhost:9110/user/info
    请求转发到:http://localhost:8110/user/info

    二、注册到nacos注册中心

    1、网关中添加依赖

    <!--服务注册-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

    2、主类添加注解

    @EnableDiscoveryClient
    

    3、添加nacos配置

    #spring:
    
    #  cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 # nacos服务地址
    

    4、添加gateway配置

    #spring:
    
    #  cloud:
    #    gateway:
          discovery:
            locator:
              enabled: true # gateway可以发现nacos中的微服务
    

    5、修改uri配置

    将uri的地址修改成注册中心中的微服务地址,网关姜葱nacos中按照名称获取微服务

    uri: lb://service-edu   #lb:表示在集群环境下通过负载均衡的方式调用
    

    6、测试

    访问:http://localhost:9110/user/info

    7、匹配多个path

    - Path=/user/**, /*/edu/**
    

    三、跨域配置

    1、前端配置

    修改guli-admin中 config/dev.env.js,BASE_API指定到网关地址

      BASE_API: '"http://127.0.0.1:9110"',
    

    2、删除后端跨域配置

    此时可以删除微服务中的跨域注解 @CrossOrigin
    例如 service_edu中 LoginController的跨域注解

    3、跨域配置

    package com.atguigu.guli.infrastructure.apigateway.config;
    
    @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);
        }
    }
    

    注意:去掉后端的所有跨域配置

    四、完整的路由配置

    1、yml配置

    routes:
    
    - id: service-edu
      uri: lb://service-edu
      predicates:
      
      - Path=/user/**, /*/edu/**
    - id: service-cms
      uri: lb://service-cms
      predicates:
      
      - Path=/*/cms/**
    - id: service-oss
      uri: lb://service-oss
      predicates:
      
      - Path=/*/oss/**
    - id: service-sms
      uri: lb://service-sms
      predicates:
      
      - Path=/*/sms/**
    - id: service-trade
      uri: lb://service-trade
      predicates:
      
      - Path=/*/trade/**
    - id: service-ucenter
      uri: lb://service-ucenter
      predicates:
      
      - Path=/*/ucenter/**
    - id: service-vod
      uri: lb://service-vod
      predicates:
      - Path=/*/vod/**  
    

    2、前端配置

    (1)修改guli-site中 utils/request.js,BASE_API指定到网关地址

    baseURL: 'http://127.0.0.1:9110',
    

    (2)所有的api模块中的baseURL可以删除
    (3)guli-admin上传相关表单中action地址的修改

    data中定义:

    BASE_API: process.env.BASE_API
    

    html中使用:

    :action="BASE_API+'/admin/oss/file/upload?module=avatar'"
    
  • 相关阅读:
    转载+自己心得
    分享
    领域驱动设计系列文章汇总
    ABP集合贴
    MVC学习系列——参考
    MVC学习系列——RazorViewEngine扩展
    MVC学习系列——Model验证扩展
    MVC学习系列——HtmlHelper扩展
    MVC学习系列——ModelBinder扩展
    MacBook强制清除gardle缓存
  • 原文地址:https://www.cnblogs.com/smalldong/p/13911221.html
Copyright © 2011-2022 走看看