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`,同时必须指定:
|
微服务项目定义了`server.servlet.context-path=/story-service`,同时必须指定:
|
||||||
|
|
||||||
```properties
|
```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 = "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);
|
* 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.ServiceRouteInfo;
|
||||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||||
import com.gitee.sop.gatewaycommon.bean.TargetRoute;
|
import com.gitee.sop.gatewaycommon.bean.TargetRoute;
|
||||||
|
import com.gitee.sop.gatewaycommon.route.RegistryMetadata;
|
||||||
import com.gitee.sop.gatewaycommon.route.RegistryListener;
|
import com.gitee.sop.gatewaycommon.route.RegistryListener;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@@ -39,7 +40,7 @@ import java.util.Objects;
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ServiceRoutesLoader<T extends TargetRoute> {
|
public class ServiceRoutesLoader<T extends TargetRoute> implements RegistryMetadata {
|
||||||
|
|
||||||
private static final String SOP_ROUTES_PATH = "/sop/routes";
|
private static final String SOP_ROUTES_PATH = "/sop/routes";
|
||||||
|
|
||||||
@@ -140,7 +141,7 @@ public class ServiceRoutesLoader<T extends TargetRoute> {
|
|||||||
* @param instance 服务实例
|
* @param instance 服务实例
|
||||||
* @return 返回最终url
|
* @return 返回最终url
|
||||||
*/
|
*/
|
||||||
private static String getRouteRequestUrl(Instance instance) {
|
private String getRouteRequestUrl(Instance instance) {
|
||||||
Map<String, String> metadata = instance.getMetadata();
|
Map<String, String> metadata = instance.getMetadata();
|
||||||
String customPath = metadata.get(METADATA_SOP_ROUTES_PATH);
|
String customPath = metadata.get(METADATA_SOP_ROUTES_PATH);
|
||||||
String homeUrl;
|
String homeUrl;
|
||||||
@@ -158,7 +159,7 @@ public class ServiceRoutesLoader<T extends TargetRoute> {
|
|||||||
} else {
|
} else {
|
||||||
// 默认处理
|
// 默认处理
|
||||||
homeUrl = getHomeUrl(instance);
|
homeUrl = getHomeUrl(instance);
|
||||||
String contextPath = metadata.getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH, "");
|
String contextPath = this.getContextPath(metadata);
|
||||||
servletPath = contextPath + SOP_ROUTES_PATH;
|
servletPath = contextPath + SOP_ROUTES_PATH;
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(servletPath) && !servletPath.startsWith("/")) {
|
if (StringUtils.isNotBlank(servletPath) && !servletPath.startsWith("/")) {
|
||||||
|
@@ -8,7 +8,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
/**
|
/**
|
||||||
* @author tanghc
|
* @author tanghc
|
||||||
*/
|
*/
|
||||||
public abstract class BaseServiceListener implements ServiceListener {
|
public abstract class BaseServiceListener implements ServiceListener, RegistryMetadata {
|
||||||
|
|
||||||
private static final String SECRET = "a3d9sf!1@odl90zd>fkASwq";
|
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 服务实例
|
* @param instance 服务实例
|
||||||
* @return 返回最终url
|
* @return 返回最终url
|
||||||
*/
|
*/
|
||||||
private static String getRouteRequestUrl(InstanceDefinition instance) {
|
private String getRouteRequestUrl(InstanceDefinition instance) {
|
||||||
Map<String, String> metadata = instance.getMetadata();
|
Map<String, String> metadata = instance.getMetadata();
|
||||||
String customPath = metadata.get(METADATA_SOP_ROUTES_PATH);
|
String customPath = metadata.get(METADATA_SOP_ROUTES_PATH);
|
||||||
String homeUrl;
|
String homeUrl;
|
||||||
@@ -88,7 +88,7 @@ public class ServiceRouteListener extends BaseServiceListener {
|
|||||||
} else {
|
} else {
|
||||||
// 默认处理
|
// 默认处理
|
||||||
homeUrl = getHomeUrl(instance);
|
homeUrl = getHomeUrl(instance);
|
||||||
String contextPath = metadata.getOrDefault(SopConstants.METADATA_SERVER_CONTEXT_PATH, "");
|
String contextPath = this.getContextPath(metadata);
|
||||||
servletPath = contextPath + SOP_ROUTES_PATH;
|
servletPath = contextPath + SOP_ROUTES_PATH;
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(servletPath) && !servletPath.startsWith("/")) {
|
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 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;
|
return "http://" + instance.getIp() + ":" + instance.getPort() + contextPath + "/v2/api-docs" + query;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user