动态路由、动态网关
网关的管理服务,提供网关路由配置的增加、修改、删除等管理功能。
进入应用目录
启动命令: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 | 非必填 | 路由描述 |
例子:
[{
name:"Path",
args:{
"pattern":"配置路径"
}
}]
[{
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
}