mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
获取context-path优化
This commit is contained in:
@@ -108,7 +108,18 @@ ribbon.ReadTimeout: 60000
|
||||
微服务项目定义了`server.servlet.context-path=/story-service`,同时必须指定:
|
||||
|
||||
```properties
|
||||
spring.cloud.nacos.discovery.metadata.server.servlet.context-path=${server.servlet.context-path}
|
||||
spring.cloud.nacos.discovery.metadata.context-path=${server.servlet.context-path}
|
||||
```
|
||||
|
||||
yml配置如下:
|
||||
|
||||
```yaml
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
metadata:
|
||||
context-path: ${server.servlet.context-path}
|
||||
```
|
||||
|
||||
不然网关无法拉取路由信息
|
||||
|
@@ -24,6 +24,8 @@ public class SopConstants {
|
||||
|
||||
public static final String METADATA_SERVER_CONTEXT_PATH = "server.servlet.context-path";
|
||||
|
||||
public static final String METADATA_SERVER_CONTEXT_PATH_COMPATIBILITY = "context-path";
|
||||
|
||||
/**
|
||||
* 在拦截器中调用获取参数:
|
||||
* String cachedBody = (String)exchange.getAttribute(SopConstants.CACHE_REQUEST_BODY_OBJECT_KEY);
|
||||
|
@@ -11,6 +11,7 @@ import com.gitee.sop.gatewaycommon.bean.NacosConfigs;
|
||||
import com.gitee.sop.gatewaycommon.bean.ServiceRouteInfo;
|
||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||
import com.gitee.sop.gatewaycommon.bean.TargetRoute;
|
||||
import com.gitee.sop.gatewaycommon.route.RegistryMetadata;
|
||||
import com.gitee.sop.gatewaycommon.route.RegistryListener;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@@ -39,7 +40,7 @@ import java.util.Objects;
|
||||
*/
|
||||
@Deprecated
|
||||
@Slf4j
|
||||
public class ServiceRoutesLoader<T extends TargetRoute> {
|
||||
public class ServiceRoutesLoader<T extends TargetRoute> implements RegistryMetadata {
|
||||
|
||||
private static final String SOP_ROUTES_PATH = "/sop/routes";
|
||||
|
||||
@@ -140,7 +141,7 @@ public class ServiceRoutesLoader<T extends TargetRoute> {
|
||||
* @param instance 服务实例
|
||||
* @return 返回最终url
|
||||
*/
|
||||
private static String getRouteRequestUrl(Instance instance) {
|
||||
private String getRouteRequestUrl(Instance instance) {
|
||||
Map<String, String> metadata = instance.getMetadata();
|
||||
String customPath = metadata.get(METADATA_SOP_ROUTES_PATH);
|
||||
String homeUrl;
|
||||
@@ -158,7 +159,7 @@ public class ServiceRoutesLoader<T extends TargetRoute> {
|
||||
} else {
|
||||
// 默认处理
|
||||
homeUrl = getHomeUrl(instance);
|
||||
String contextPath = metadata.getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH, "");
|
||||
String contextPath = this.getContextPath(metadata);
|
||||
servletPath = contextPath + SOP_ROUTES_PATH;
|
||||
}
|
||||
if (StringUtils.isNotBlank(servletPath) && !servletPath.startsWith("/")) {
|
||||
|
@@ -8,7 +8,7 @@ import org.springframework.web.client.RestTemplate;
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
public abstract class BaseServiceListener implements ServiceListener {
|
||||
public abstract class BaseServiceListener implements ServiceListener, RegistryMetadata {
|
||||
|
||||
private static final String SECRET = "a3d9sf!1@odl90zd>fkASwq";
|
||||
|
||||
|
@@ -0,0 +1,17 @@
|
||||
package com.gitee.sop.gatewaycommon.route;
|
||||
|
||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
public interface RegistryMetadata {
|
||||
|
||||
default String getContextPath(Map<String, String> metadata) {
|
||||
return metadata.getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH
|
||||
, metadata.getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH_COMPATIBILITY, ""));
|
||||
}
|
||||
|
||||
}
|
@@ -70,7 +70,7 @@ public class ServiceRouteListener extends BaseServiceListener {
|
||||
* @param instance 服务实例
|
||||
* @return 返回最终url
|
||||
*/
|
||||
private static String getRouteRequestUrl(InstanceDefinition instance) {
|
||||
private String getRouteRequestUrl(InstanceDefinition instance) {
|
||||
Map<String, String> metadata = instance.getMetadata();
|
||||
String customPath = metadata.get(METADATA_SOP_ROUTES_PATH);
|
||||
String homeUrl;
|
||||
@@ -88,7 +88,7 @@ public class ServiceRouteListener extends BaseServiceListener {
|
||||
} else {
|
||||
// 默认处理
|
||||
homeUrl = getHomeUrl(instance);
|
||||
String contextPath = metadata.getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH, "");
|
||||
String contextPath = this.getContextPath(metadata);
|
||||
servletPath = contextPath + SOP_ROUTES_PATH;
|
||||
}
|
||||
if (StringUtils.isNotBlank(servletPath) && !servletPath.startsWith("/")) {
|
||||
|
@@ -44,9 +44,9 @@ public class ServiceDocListener extends BaseServiceListener {
|
||||
}
|
||||
}
|
||||
|
||||
private static String getRouteRequestUrl(InstanceDefinition instance) {
|
||||
private String getRouteRequestUrl(InstanceDefinition instance) {
|
||||
String query = buildQuery(SECRET);
|
||||
String contextPath = instance.getMetadata().getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH, "");
|
||||
String contextPath = this.getContextPath(instance.getMetadata());
|
||||
return "http://" + instance.getIp() + ":" + instance.getPort() + contextPath + "/v2/api-docs" + query;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user