mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
2.5.10
This commit is contained in:
@@ -22,6 +22,8 @@ public class SopConstants {
|
|||||||
|
|
||||||
public static final String REDIRECT_PATH_KEY = "r-path";
|
public static final String REDIRECT_PATH_KEY = "r-path";
|
||||||
|
|
||||||
|
public static final String SOP_NOT_MERGE = "sop.not-merge";
|
||||||
|
|
||||||
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";
|
public static final String METADATA_SERVER_CONTEXT_PATH_COMPATIBILITY = "context-path";
|
||||||
|
@@ -22,6 +22,15 @@ import java.util.Map;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class ZuulResultExecutor extends BaseExecutorAdapter<RequestContext, String> {
|
public class ZuulResultExecutor extends BaseExecutorAdapter<RequestContext, String> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isMergeResult(RequestContext request) {
|
||||||
|
Object notMerge = request.getRequest().getAttribute(SopConstants.SOP_NOT_MERGE);
|
||||||
|
if (notMerge != null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return super.isMergeResult(request);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getResponseStatus(RequestContext requestContext) {
|
public int getResponseStatus(RequestContext requestContext) {
|
||||||
List<Pair<String, String>> bizHeaders = requestContext.getZuulResponseHeaders();
|
List<Pair<String, String>> bizHeaders = requestContext.getZuulResponseHeaders();
|
||||||
|
@@ -1,21 +1,19 @@
|
|||||||
package com.gitee.sop.gateway.controller;
|
package com.gitee.sop.gateway.controller;
|
||||||
|
|
||||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||||
import com.gitee.sop.gatewaycommon.zuul.ValidateService;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.annotation.WebServlet;
|
import javax.servlet.annotation.WebServlet;
|
||||||
import javax.servlet.http.HttpServlet;
|
import javax.servlet.http.HttpServlet;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 传统web开发入口
|
* 传统web开发入口
|
||||||
* @author tanghc
|
* @author tanghc
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
|
||||||
@WebServlet(urlPatterns = "/rest/*")
|
@WebServlet(urlPatterns = "/rest/*")
|
||||||
public class RestServlet extends HttpServlet {
|
public class RestServlet extends HttpServlet {
|
||||||
|
|
||||||
@@ -27,34 +25,21 @@ public class RestServlet extends HttpServlet {
|
|||||||
@Value("${sop.restful.path:/rest}")
|
@Value("${sop.restful.path:/rest}")
|
||||||
private String restPath;
|
private String restPath;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ValidateService validateService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证回调,可自定义实现接口
|
|
||||||
*/
|
|
||||||
private ValidateService.ValidateCallback callback = (currentContext -> {
|
|
||||||
try {
|
|
||||||
currentContext.getRequest().getRequestDispatcher(path).forward(currentContext.getRequest(), currentContext.getResponse());
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("请求转发异常", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
doPost(request, response);
|
doPost(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
String url = request.getRequestURL().toString();
|
String url = request.getRequestURL().toString();
|
||||||
int index = url.indexOf(restPath);
|
int index = url.indexOf(restPath);
|
||||||
// 取/rest的后面部分
|
// 取/rest的后面部分
|
||||||
String path = url.substring(index + restPath.length());
|
String path = url.substring(index + restPath.length());
|
||||||
request.setAttribute(SopConstants.REDIRECT_METHOD_KEY, path);
|
request.setAttribute(SopConstants.REDIRECT_METHOD_KEY, path);
|
||||||
request.setAttribute(SopConstants.REDIRECT_VERSION_KEY, EMPTY_VERSION);
|
request.setAttribute(SopConstants.REDIRECT_VERSION_KEY, EMPTY_VERSION);
|
||||||
validateService.validate(request, response, callback);
|
request.setAttribute(SopConstants.SOP_NOT_MERGE, true);
|
||||||
|
request.getRequestDispatcher(this.path).forward(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user