数据验证失败, 优化详细信息输出 + 优化request_id生成

This commit is contained in:
白茶清欢 2025-06-07 17:01:52 +08:00
parent 86f91b4a9e
commit 327099e963
2 changed files with 17 additions and 4 deletions

View File

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.WebRequest; import org.springframework.web.context.request.WebRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -45,11 +46,23 @@ public class GlobalExceptionHandler {
// 处理参数校验异常@NotNull@Size等校验失败对应validate库 // 处理参数校验异常@NotNull@Size等校验失败对应validate库
@ExceptionHandler(MethodArgumentNotValidException.class) @ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Object> handleValidationException(MethodArgumentNotValidException ex, HttpServletRequest httpServletRequest) { public ResponseEntity<Object> handleValidationException(MethodArgumentNotValidException ex, HttpServletRequest httpServletRequest) {
List<Map<String, Object>> errDetailList = new ArrayList<>();
List<String> errors = new ArrayList<>(); List<String> errors = new ArrayList<>();
ex.getBindingResult().getFieldErrors().forEach(itemErr -> errors.add(itemErr.getField() + ":" + itemErr.getDefaultMessage())); ex.getBindingResult().getFieldErrors().forEach(itemErr -> {
// message 层面显示的信息
errors.add(itemErr.getField() + ":" + itemErr.getDefaultMessage());
// err detail信息
Map<String, Object> detail = new HashMap<>();
detail.put("object_name", itemErr.getObjectName());
detail.put("field", itemErr.getField());
detail.put("input", itemErr.getRejectedValue());
detail.put("code", itemErr.getCode());
detail.put("binding_failure", itemErr.isBindingFailure());
errDetailList.add(detail);
});
RuntimeContext runtimeContext = getRuntimeContext(httpServletRequest); RuntimeContext runtimeContext = getRuntimeContext(httpServletRequest);
Response<Object> response = new Response<>(runtimeContext).failure("400", String.join(" - ", errors), ex.getFieldErrors()); Response<Object> response = new Response<>(runtimeContext).failure("400", String.join(" - ", errors), errDetailList);
return getResponseEntity(response); return getResponseEntity(response);
} }

View File

@ -123,9 +123,9 @@ public class RequestInitFilter extends HttpFilter {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
Instant instant = Instant.ofEpochMilli(runtimeContext.getStartTimeStamp()); Instant instant = Instant.ofEpochMilli(runtimeContext.getStartTimeStamp());
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault()); ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String formatted = zdt.format(formatter); String formatted = zdt.format(formatter);
list.add(runtimeContext.getServerIp()); // 服务器IP list.add(runtimeContext.getServerIp().replace(".", "")); // 服务器IP
list.add(formatted); // 请求时间 list.add(formatted); // 请求时间
list.add(UUID.randomUUID().toString()); // 随机字符串 list.add(UUID.randomUUID().toString()); // 随机字符串
String requestId = String.join("-", list); // 拼接成请求ID String requestId = String.join("-", list); // 拼接成请求ID