完善 gateway 服务,支持 tag 过滤服务实例

This commit is contained in:
YunaiV
2022-06-25 22:36:12 +08:00
parent b8fb106aaf
commit 97b931f782
5 changed files with 74 additions and 4 deletions

View File

@@ -0,0 +1,39 @@
package cn.iocoder.yudao.gateway.util;
import cn.hutool.core.net.NetUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.http.HttpHeaders;
import java.util.Objects;
/**
* 环境 Utils
*
* copy from yudao-spring-boot-starter-env 的 EnvUtils 类
*
* @author 芋道源码
*/
public class EnvUtils {
private static final String HEADER_TAG = "tag";
public static final String HOST_NAME_VALUE = "${HOSTNAME}";
public static String getTag(HttpHeaders headers) {
String tag = headers.getFirst(HEADER_TAG);
// 如果请求的是 "${HOSTNAME}",则解析成对应的本地主机名
// 目的:特殊逻辑,解决 IDEA Rest Client 不支持环境变量的读取,所以就服务器来做
return Objects.equals(tag, HOST_NAME_VALUE) ? getHostName() : tag;
}
public static String getTag(ServiceInstance instance) {
return instance.getMetadata().get(HEADER_TAG);
}
public static String getHostName() {
return StrUtil.blankToDefault(NetUtil.getLocalHostName(), IdUtil.fastSimpleUUID());
}
}

View File

@@ -26,9 +26,10 @@ import reactor.core.publisher.Mono;
@Slf4j
public class WebFrameworkUtils {
@SuppressWarnings("UastIncorrectHttpHeaderInspection")
private static final String HEADER_TENANT_ID = "tenant-id";
private static final String HEADER_TAG = "tag";
private WebFrameworkUtils() {}
/**