网关管理应用 ---------- ## 关键词 `动态路由、动态网关` ## 简介 网关的管理服务,提供网关路由配置的增加、修改、删除等管理功能。 ## 启动 ### 先决条件 - [redis](http://redis.io/download) - [postgresql](http://www.postgresql.org/) - [rabbitmq](http://rabbitmq.io/download) - [nacos](../../docs/register.md) ### 启动命令 进入应用目录 启动命令:`mvn spring-boot:run` docker镜像打包:`mvn docker:build` ## 使用指南 ### 新增路由 接口用途: 通过网关后台动态新增路由或配置路由策略,如限流、转发、处理等网关动作 接口路径:`POST /gateway/routes` 报文类型:`application/json` 请求参数: | 服务名 | 简介 | 默认地址 | |--------------------|---------------------|--------------------------| | uri | 必填 | 代理路径,如http://baidu.com或lb://serviceId | | routeId | 必填 | 路由名称,不可重复 | | predicates | 必填 | 断言,有多种断言维度,springcloud gateway默认有多种实现,见文档 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.0.2.RELEASE/single/spring-cloud-gateway.html#gateway-request-predicates-factories,见例子 | | filters | 非必填 | 过滤器配置,springcloud gateway默认有多种实现,见文档 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.0.2.RELEASE/single/spring-cloud-gateway.html#_gatewayfilter_factories,见例子 | | description | 非必填 | 路由描述 | 例子: #### predicates: ``` [{ name:"Path", args:{ "pattern":"配置路径" } }] ``` #### filters: ``` [{ name:"AddRequestHeader", args:{ "pattern":"X-Request-Foo, Bar" } }] ``` ### 转发路由例子 请求报文 ``` { "uri": "http://www.baidu.com", "routeId": "test_route_id", "predicates": [{ "name": "Path", "args": { "pattern": "/bd" } }], "filters":[{ "name": "StripPrefix", "args": { "parts": "2" } }], "description": "这是一个转发XX服务的路由" } ``` 响应报文 ``` { "code": "000000", "mesg": "处理成功", "timestamp": "2019-01-31T07:19:53.230Z", "data": 1 } ``` ### 限流路由例子 请求报文 ``` { "uri": "lb://serviceid", "routeId": "xx_routeid", "predicates": [{ "name": "Path", "args": { "pattern": "/xx" } }], "filters":[{ "name": "RequestRateLimiter", "args": { "redis-rate-limiter.replenishRate": "10", "redis-rate-limiter.burstCapacity": "20" } }], "description": "这是一个带限流的路由" } ``` 响应报文 ``` { "code": "000000", "mesg": "处理成功", "timestamp": "2019-01-31T07:19:53.230Z", "data": 1 } ```