春云网关入门

  

简介

  

春云网关相比之前我们使用的Zuul (1。x)它有哪些优势呢? Zuul (1。x)基于Servlet,使用阻塞API,它不支持任何长连接,如WebSockets.Spring云网关使用非阻塞API,支持WebSockets,支持限流等新特性。本文首先用官方的案例带领大家来体验下春云的一些简单的功能。

  

创建工程

  

创建工程springcloud工程,名为springcloud-gateway-hello

  

砰的一声。xml内容如下:

  
 <代码类="语言xml "> & lt; ?xml version=" 1.0 " encoding=" utf - 8 " ?比;
  & lt;项目xmlns=" http://maven.apache.org/POM/4.0.0 " xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance "
  xsi: schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”比;
  & lt; modelVersion> 4.0.0
  & lt; parent>
  & lt; groupId> org.springframework.boot
  & lt; artifactId> spring-boot-starter-parent
  & lt; version> 2.1.2.RELEASE
  & lt; relativePath/比;& lt; !——从库中查找父——比;
  & lt;/parent>
  & lt; groupId> com.gf
  & lt; artifactId> springcloud-gateway-hello
  & lt; version> 0.0.1-SNAPSHOT
  & lt; name> springcloud-gateway-hello
  春天Boot< & lt; description>演示项目;/description>
  
  & lt; properties>
  & lt; java.version> 1.8 & lt;/java.version>
  & lt; spring-cloud.version> Greenwich.RELEASE
  & lt;/properties>
  
  & lt; dependencies>
  & lt; dependency>
  & lt; groupId> org.springframework.cloud
  & lt; artifactId> spring-cloud-starter-gateway
  & lt;/dependency>
  
  & lt; dependency>
  & lt; groupId> org.springframework.boot
  & lt; artifactId> spring-boot-starter-test
  & lt; scope> test
  & lt;/dependency>
  & lt;/dependencies>
  
  & lt; dependencyManagement>
  & lt; dependencies>
  & lt; dependency>
  & lt; groupId> org.springframework.cloud
  & lt; artifactId> spring-cloud-dependencies
  & lt; version> $ {spring-cloud.version} & lt;/version>
  & lt; type> pom
  & lt; scope> import
  & lt;/dependency>
  & lt;/dependencies>
  & lt;/dependencyManagement>
  
  & lt; build>
  & lt; plugins>
  & lt; plugin>
  & lt; groupId> org.springframework.boot
  & lt; artifactId> spring-boot-maven-plugin
  & lt;/plugin>
  & lt;/plugins>
  & lt;/build>
  
  & lt; repositories>
  & lt; repository>
  & lt; id> spring-milestones
  & lt; name>春天Milestones
  & lt; url> https://repo.spring.io/milestone</url>
  & lt;/repository>
  & lt;/repositories>
  
  & lt;/project>  
  

# #创建一个简单的路由
春云网关使用路由来处理对下游服务的请求。创建RouteLocator的Bean,在本案例将把所有请求路由到http://httpbin.org。路由可以通过多种方式配置:

  
 <=坝镅詊ava代码类> @SpringBootApplication
  公开课SpringcloudGatewayHelloApplication {
  
  公共静态void main (String [] args) {
  SpringApplication.run (SpringcloudGatewayHelloApplication。类,args);
  }
  
  @ bean
  公共RouteLocator myRoutes (RouteLocatorBuilder builder) {
  返回builder.routes ()
  .route (p→p
  .path (“/?
  .filters (f→f。addRequestHeader(“你好”、“世界”))
  .uri (" http://httpbin.org: 80 "))
  .build ();
  }
  
  } 
  

上述myRoutes方法RouteLocatorBuilder可以很容易地用于创建路由。除了创建路由之外,RouteLocatorBuilder还允许你在路由中添加各种<强>谓词(断言)和<强>过滤器强,以便根据特定条件更改请求和响应。

  

上面创建的路线可以让请求“/鼻肭蠖甲⒌健癶ttp://httpbin.org/get”。在路线配置上,我们添加了一个过滤器,该过滤器会将请求添加一个标题,键为你好,值为世界。

  

启动项目,访问http://127.0.0.1:8080,显示如下:

  
 <代码类=" language-json "> {
  " args ": {
  
  },
  "标题":{
  “接受”:“text/html、application/xhtml + xml应用程序/xml; q=0.9,图像/webp图像/apng */*; q=0.8 ",
  “接受编码”:“gzip、缩小、br”,
  :“接收语言应用,zh型;q=0.9, zh-TW; q=0.8 ",
  “cache - control”:“信息=0”,
  “连接”:“关闭”,
  “转发”:“原型=http;主机=\ " 127.0.0.1:8080 \”;为=\ " 127.0.0.1:55607 \ ",
  “你好”:“世界”,
  “主机”:“httpbin.org”,
  “Upgrade-Insecure-Requests”:“1”,
  “用户代理”:“Mozilla/5.0(麦金塔电脑;Intel Mac OS X 10 _14_3) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/71.0.3578.98 Safari 537.36”,
  :“X-Forwarded-Host 127.0.0.1:8080”
  },
  “起源”:“127.0.0.1,124.74.78.150”,
  “url”:“http://127.0.0.1:8080”
  }

春云网关入门