栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

gateway的在springboot中的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gateway的在springboot中的使用

gateway的使用
1创建一个Maven项目(gateway作为父项目)

导入依赖



    4.0.0
    com.chaoxing
    gateway
    0.0.1-SNAPSHOT
    gateway
    gateway
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
    
    
        gateway-client
        gateway-server
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.projectlombok
            lombok
            1.18.8
        

        
        
            org.apache.httpcomponents
            httpcore
            4.4.12
        


        
            commons-lang
            commons-lang
            2.6
        
        
            javax.servlet
            servlet-api
            2.5
            provided
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2.1.1.RELEASE
        

        
            javax.validation
            validation-api
            2.0.1.Final
        


    

    
        
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            
        
    





创建gateway-client作为客户端即为路由转向的服务

导入依赖



    4.0.0
    com.chaoxing
    gateway-client
    0.0.1-SNAPSHOT
    gateway-client
    gateway-client
    
    
    
    
    
    

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.projectlombok
            lombok
            1.18.8
        

        
        
            org.apache.httpcomponents
            httpcore
            4.4.12
        


        
            commons-lang
            commons-lang
            2.6
        
        
            javax.servlet
            servlet-api
            2.5
            provided
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2.1.1.RELEASE
        

        
            javax.validation
            validation-api
            2.0.1.Final
        


    

    
        
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            
        
    




建立controller

即为跳转到的服务

package com.chaoxing.GateWayClient.contorllerr;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("name")
public class GateWayClientController {
    @RequestMapping("/getname")
    public String test() {
        return "my name is Zkun";
    }
}


修改Application

package com.chaoxing.GateWayClient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class GateWayClientpplication {

    public static void main(String[] args) {
        SpringApplication.run(GateWayClientpplication.class, args);
    }

}


添加并修改配置文件

application.properties

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=9090

boostrap.properties

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gatawaydemo
spring.cloud.nacos.config.namespace=7d7e9d28-54b3-4bec-9312-0b310df601cb


注意:此处的是在nacos的命名规则里取名获得即

名字可不同,但后面的id需要一致,配置文件中的name在后来的服务绑定中有用
客户端配置完毕

服务端配置
依赖:



    4.0.0
    com.example
    gateway
    0.0.1-SNAPSHOT
    gateway
    网关的使用

    
        1.8
        Greenwich.SR3
    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
    
    
        
            org.springframework.cloud
            spring-cloud-starter-gateway
            2.1.3.RELEASE
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2.1.1.RELEASE
        
    

    
        

            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            

        

    




建立服务端项目gateway-server

跨域问题:首先处理的即为跨域问题

建立configruation,代码如下,此为通用代码

package com.example.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

@Configuration
public class configruation {
    @Bean
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();

        //1、配置跨域
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }
}

添加并修改配置文件

applocation.properties

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=88

bootstrap.properties

此处也是nacos命名规则中绑定的内容

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gataway
spring.cloud.nacos.config.namespace=c6d7cb62-65d4-41ce-b800-63a5266538f5

application.yml(重要)

id为自己取得名字,url中的即为前面客户端设置的name,path中的name为自己设置的方法

spring:
  cloud:
    gateway:
      routes:
        - id: gatawaydemo
          uri: lb://gatawaydemo  #这里的名字必须和项目配置文件 的项目名一致
          predicates:
            - Path=/api/name/**  #访问 /api/thirdparty 这个路径就路由到
          filters:                    #路径重写 成一下 这里中间逗号, 前面是截取的路径,后面是替换的路径
            #也就是你看以为你实际访问是 /api/thirdparty/oss/policy,实际上它是吧 /api//api/thirdparty这一段给丢了,只要只要oss/policy
            #
            - RewritePath=/api/(?.*),/${segment}

给主方法添加注释

服务端完毕

运行

上面为自己设置的端口号+地址
下面即为自己设置的服务实现

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000172.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号