main
HuangHai 3 months ago
parent c09df4f61b
commit 45bb5f48d5

@ -14,7 +14,6 @@ import lombok.SneakyThrows;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import org.slf4j.Logger; import org.slf4j.Logger;
public class GwApplication extends JFinalConfig { public class GwApplication extends JFinalConfig {

@ -32,6 +32,7 @@ public class RouterHandler extends Handler {
static final String HEADER_COOKIE = "Cookie"; static final String HEADER_COOKIE = "Cookie";
static final String HEADER_ACCEPT = "Accept"; static final String HEADER_ACCEPT = "Accept";
static final String HEADER_CONTENT_TYPE = "Content-Type"; static final String HEADER_CONTENT_TYPE = "Content-Type";
static final String ERROR_MESSAGE = "服务繁忙,请稍后重试";
} }
// 静态资源扩展名 // 静态资源扩展名
@ -81,7 +82,9 @@ public class RouterHandler extends Handler {
// 获取转发URL // 获取转发URL
String forwardUrl = getForwardUrl(servletPath); String forwardUrl = getForwardUrl(servletPath);
if (forwardUrl == null) { if (forwardUrl == null) {
handleError(res, isHandled, "无效的请求路径", null); logger.error("无效的请求路径: {}", servletPath);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
return; return;
} }
@ -101,11 +104,14 @@ public class RouterHandler extends Handler {
} }
break; break;
default: default:
handleError(res, isHandled, "不支持的请求方法: " + req.getMethod(), null); logger.warn("不支持的请求方法: {}", req.getMethod());
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("请求处理异常", e); logger.error("请求处理异常", e);
handleError(res, isHandled, "系统异常", e); renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
} }
} }
@ -147,7 +153,9 @@ public class RouterHandler extends Handler {
executeRequest(request, res); executeRequest(request, res);
isHandled[0] = true; isHandled[0] = true;
} catch (Exception e) { } catch (Exception e) {
handleError(res, isHandled, "GET请求处理失败", e); logger.error("GET请求处理失败: {}", forwardUrl, e);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
} }
} }
@ -159,7 +167,9 @@ public class RouterHandler extends Handler {
executeRequest(request, res); executeRequest(request, res);
isHandled[0] = true; isHandled[0] = true;
} catch (Exception e) { } catch (Exception e) {
handleError(res, isHandled, "POST请求处理失败", e); logger.error("POST请求处理失败: {}", forwardUrl, e);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
} }
} }
@ -171,7 +181,9 @@ public class RouterHandler extends Handler {
List<UploadFile> files = mp.getFiles(); List<UploadFile> files = mp.getFiles();
if (files.isEmpty()) { if (files.isEmpty()) {
handleError(res, isHandled, "没有上传文件", null); logger.error("文件上传失败: 未找到上传文件");
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
return; return;
} }
@ -179,7 +191,9 @@ public class RouterHandler extends Handler {
executeRequest(request, res); executeRequest(request, res);
isHandled[0] = true; isHandled[0] = true;
} catch (Exception e) { } catch (Exception e) {
handleError(res, isHandled, "文件上传失败", e); logger.error("文件上传异常: {}", forwardUrl, e);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
} }
} }
@ -267,21 +281,28 @@ public class RouterHandler extends Handler {
// 执行请求 // 执行请求
private void executeRequest(Request request, HttpServletResponse res) throws IOException { private void executeRequest(Request request, HttpServletResponse res) throws IOException {
Response response = OK_HTTP_CLIENT.newCall(request).execute(); try {
if (response.isSuccessful()) { Response response = OK_HTTP_CLIENT.newCall(request).execute();
ResponseBody body = response.body(); if (response.isSuccessful()) {
if (body != null) { ResponseBody body = response.body();
String contentType = response.header(Constants.HEADER_CONTENT_TYPE); if (body != null) {
if (contentType != null && contentType.startsWith("image/")) { String contentType = response.header(Constants.HEADER_CONTENT_TYPE);
handleImageResponse(res, body, contentType); if (contentType != null && contentType.startsWith("image/")) {
handleImageResponse(res, body, contentType);
} else {
handleTextResponse(res, body);
}
} else { } else {
handleTextResponse(res, body); logger.error("响应体为空: {}", request.url());
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
} }
} else { } else {
renderJson(res, new RetBean(RetBean.ERROR, "响应体为空").toString()); logger.error("请求失败: {} - {}", request.url(), response.code());
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
} }
} else { } catch (Exception e) {
renderJson(res, new RetBean(RetBean.ERROR, "请求失败!").toString()); logger.error("请求执行异常: {}", request.url(), e);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
} }
} }
@ -315,17 +336,11 @@ public class RouterHandler extends Handler {
res.getWriter().println(body); res.getWriter().println(body);
res.getWriter().flush(); res.getWriter().flush();
} catch (IOException e) { } catch (IOException e) {
logger.error("响应写入异常", e);
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
// 处理错误
private void handleError(HttpServletResponse res, boolean[] isHandled, String message, Exception e) {
String errorMessage = e != null ? message + ": " + e.getMessage() : message;
renderJson(res, new RetBean(RetBean.ERROR, errorMessage).toString());
isHandled[0] = true;
}
// 检查认证 // 检查认证
private boolean isAuthenticated(HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) { private boolean isAuthenticated(HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) {
String servletPath = req.getServletPath(); String servletPath = req.getServletPath();
@ -348,7 +363,9 @@ public class RouterHandler extends Handler {
} }
} }
handleError(res, isHandled, "登录已过期,请重新登录!", null); logger.warn("认证失败: {}", servletPath);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
return false; return false;
} }
@ -394,7 +411,9 @@ public class RouterHandler extends Handler {
// 检查是否为内部调用 // 检查是否为内部调用
private boolean isInternalCall(String servletPath, HttpServletResponse res, boolean[] isHandled) { private boolean isInternalCall(String servletPath, HttpServletResponse res, boolean[] isHandled) {
if (servletPath.endsWith("/internal/")) { if (servletPath.endsWith("/internal/")) {
handleError(res, isHandled, "微服务间内部接口调用,是不需要走网关的!", null); logger.warn("内部接口调用: {}", servletPath);
renderJson(res, new RetBean(RetBean.ERROR, Constants.ERROR_MESSAGE).toString());
isHandled[0] = true;
return true; return true;
} }
return false; return false;
@ -413,6 +432,6 @@ public class RouterHandler extends Handler {
// 记录请求日志 // 记录请求日志
private void logRequest(HttpServletRequest req, String forwardUrl) { private void logRequest(HttpServletRequest req, String forwardUrl) {
logger.info("Request: {} {} -> {}", req.getMethod(), req.getRequestURI(), forwardUrl); logger.info("请求转发: {} {} -> {}", req.getMethod(), req.getRequestURI(), forwardUrl);
} }
} }
Loading…
Cancel
Save