本示例,主要是利用spring-boot-admin来动态的管理网关路由。 也可以通过接口的方式来实现对路由的管理
增加Normal路由信息
curl -X POST -H "Content-Type: application/json" -d '{"id":"sina","predicates":[{"args":{"_genkey_2":"/sina/**"},"name":"Path"}],"filters":[],"uri":"https://www.sina.com","order":"2"}' 127.0.0.1:8080/actuator/gateway/routes/sina定义查询路由信息
curl -X POST -H "Content-Type: application/json" -d '{"id":"sina","predicates":[{"args":{"param":"s","regexp":"1"},"name":"Query"}],"filters":[],"uri":"https://www.baidu.com","order":"1"}' 127.0.0.1:8080/actuator/gateway/routes/sina增加fallback路由
curl -X POST -H "Content-Type: application/json" -d '{"id":"sina","predicates":[{"args":{"_genkey_2":"/sina/**"},"name":"Path"}],"filters":[{"args":{"name":"fallbackcmd","fallbackUri" :"forward:/hystrixfallback"},"name":"Hystrix"}],"uri":"https://www.sccina.com","order":"2"}' 127.0.0.1:8080/actuator/gateway/routes/sina -vvv增加域名 路径匹配
curl -X POST -H "Content-Type: application/json" -d '{"id":"sina","predicates":[{"args":{"_genkey_2":"/baidu/**"},"name":"Path"},{"args":{"_genkey_3":"www.baidu.com"},"name":"Host"}],"filters":[],"uri":"https://www.baidu.com","order":"1"}' 127.0.0.1:8080/actuator/gateway/routes/sina路径重写
curl -X POST -H "Content-Type: application/json" -d '{"id":"sina","predicates":[{"args":{"_genkey_2":"/baidu/**"},"name":"Path"}],"filters":[{"name":"RewritePath","args":{"regexp":"/baidu","replacement":"/"}}],"uri":"https://www.baidu.com","order":"1"}' 127.0.0.1:8080/actuator/gateway/routes/sina//HystrixGatewayFilterFactory
//转为map
public static class Config {
private String name;
private Setter setter;
private URI fallbackUri;
}
//QueryRoutePredicateFactory
public static class Config {
@NotEmpty
private String param;
private String regexp;
}