tanghc 5 years ago
parent f068e6f941
commit 0c7b1ae408
  1. 7
      sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/mapping/ApiMappingHandlerMapping.java
  2. 26
      sop-gateway/src/main/java/com/gitee/sop/gateway/controller/RestServlet.java

@ -28,8 +28,11 @@ public class ApiMappingHandlerMapping extends RequestMappingHandlerMapping imple
ApiMapping apiMapping = method.getAnnotation(ApiMapping.class);
ApiAbility apiAbility = OpenUtil.getAnnotationFromMethodOrClass(method, ApiAbility.class);
StringValueResolver valueResolver = null;
if (apiMapping != null || apiAbility != null) {
valueResolver = isMvc ? stringValueResolverMVC : stringValueResolver;
if (apiMapping != null) {
valueResolver = stringValueResolver;
}
if (isMvc || apiAbility != null) {
valueResolver = stringValueResolverMVC;
}
this.setEmbeddedValueResolver(valueResolver);
return super.getMappingForMethod(method, handlerType);

@ -1,19 +1,21 @@
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 {
@ -25,20 +27,34 @@ 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) throws ServletException, IOException {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
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);
request.getRequestDispatcher(this.path).forward(request, response);
validateService.validate(request, response, callback);
}
}
Loading…
Cancel
Save