You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
3.0 KiB
Markdown

2 years ago
网关管理应用
----------
## 关键词
`动态路由、动态网关`
## 简介
网关的管理服务,提供网关路由配置的增加、修改、删除等管理功能。
## 启动
### 先决条件
- [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
}
```