简介
春云网关相比之前我们使用的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” }春云网关入门