From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-gateway/src/main/java/jnpf/handler/GatewayHandler.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/jnpf-gateway/src/main/java/jnpf/handler/GatewayHandler.java b/jnpf-gateway/src/main/java/jnpf/handler/GatewayHandler.java
new file mode 100644
index 0000000..ca698e9
--- /dev/null
+++ b/jnpf-gateway/src/main/java/jnpf/handler/GatewayHandler.java
@@ -0,0 +1,60 @@
+package jnpf.handler;
+
+import jnpf.util.JsonUtil;
+import jnpf.base.ActionResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
+import org.springframework.cloud.gateway.support.NotFoundException;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.core.io.buffer.DataBufferFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.server.ResponseStatusException;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+/**
+ * 缃戝叧缁熶竴寮傚父澶勭悊
+ *
+ * @author JNPF寮�鍙戝钩鍙扮粍
+ * @version V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙革紙https://www.jnpfsoft.com锛�
+ * @date 2021-03-24
+ */
+@Slf4j
+@Order(-1)
+@Configuration
+public class GatewayHandler implements ErrorWebExceptionHandler {
+
+ @Override
+ public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
+ ServerHttpResponse response = exchange.getResponse();
+
+ if (exchange.getResponse().isCommitted()) {
+ return Mono.error(ex);
+ }
+
+ String msg;
+
+ if (ex instanceof NotFoundException) {
+ msg = "鏈嶅姟鏈壘鍒�";
+ } else if (ex instanceof ResponseStatusException) {
+ ResponseStatusException responseStatusException = (ResponseStatusException) ex;
+ msg = responseStatusException.getMessage();
+ } else {
+ msg = "鍐呴儴鏈嶅姟鍣ㄩ敊璇�";
+ log.error(ex.getMessage(), ex);
+ }
+
+ response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+ response.setStatusCode(HttpStatus.OK);
+
+ return response.writeWith(Mono.fromSupplier(() -> {
+ DataBufferFactory bufferFactory = response.bufferFactory();
+ ActionResult result = ActionResult.fail(msg);
+ return bufferFactory.wrap(JsonUtil.getObjectToString(result).getBytes());
+ }));
+ }
+}
--
Gitblit v1.8.0