数据验证失败, 优化详细信息输出 + 优化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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -45,11 +46,23 @@ public class GlobalExceptionHandler {
// 处理参数校验异常@NotNull@Size等校验失败对应validate库
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Object> handleValidationException(MethodArgumentNotValidException ex, HttpServletRequest httpServletRequest) {
List<Map<String, Object>> errDetailList = 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);
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);
}

View File

@ -123,9 +123,9 @@ public class RequestInitFilter extends HttpFilter {
List<String> list = new ArrayList<>();
Instant instant = Instant.ofEpochMilli(runtimeContext.getStartTimeStamp());
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);
list.add(runtimeContext.getServerIp()); // 服务器IP
list.add(runtimeContext.getServerIp().replace(".", "")); // 服务器IP
list.add(formatted); // 请求时间
list.add(UUID.randomUUID().toString()); // 随机字符串
String requestId = String.join("-", list); // 拼接成请求ID