数据验证失败, 优化详细信息输出 + 优化request_id生成
This commit is contained in:
parent
86f91b4a9e
commit
327099e963
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user