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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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