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 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_COMPATIBILITY = "context-path";
|
||||
|
@@ -22,6 +22,15 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
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
|
||||
public int getResponseStatus(RequestContext requestContext) {
|
||||
List<Pair<String, String>> bizHeaders = requestContext.getZuulResponseHeaders();
|
||||
|
@@ -1,21 +1,19 @@
|
||||
package com.gitee.sop.gateway.controller;
|
||||
|
||||
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 javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 传统web开发入口
|
||||
* @author tanghc
|
||||
*/
|
||||
@Slf4j
|
||||
@WebServlet(urlPatterns = "/rest/*")
|
||||
public class RestServlet extends HttpServlet {
|
||||
|
||||
@@ -27,34 +25,21 @@ public class RestServlet extends HttpServlet {
|
||||
@Value("${sop.restful.path:/rest}")
|
||||
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
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
doPost(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
String url = request.getRequestURL().toString();
|
||||
int index = url.indexOf(restPath);
|
||||
// 取/rest的后面部分
|
||||
String path = url.substring(index + restPath.length());
|
||||
request.setAttribute(SopConstants.REDIRECT_METHOD_KEY, path);
|
||||
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