Springboot 애플리케이션에서 Jersey 및 Jax-rs를 사용하여 사용자 정의와 유사한 javax.validator를 구현하는 방법에 대한 단계별 절차
public class ConstraintValidatorExceptionMapper implements ExceptionMapper<ConstraintViolationException>{
@Override
public Response toResponse(ConstraintViolationException exception) {
final Map<String, String> errorResponse =
exception.getConstraintViolations()
.stream()
.collect(Collectors.toMap(o -> o.getPropertyPath().toString(), o -> o.getMessage()));
return Response
.status(Response.Status.BAD_REQUEST)
.entity(errorResponse)
.build();
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@CompareDates
public class ViewTransactionHistoryRequest {
@JsonProperty
private String customerId;
@JsonProperty
private String cardSerNo;
@JsonProperty
@NotBlank(message="contact id must not be null or empty")
private String contactId;
@JsonProperty
private String dateFrom;
@JsonProperty
private String dateTo;
@JsonProperty
private Double amountFrom;
@JsonProperty
private Double amountTo;
@JsonProperty
private int page;
}
@CompareDates
날짜를 확인하기 위해 샘플 주석 유효성 검사기를 만들었습니다.@Constraint(validatedBy = DateValidator.class)
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface CompareDates {
String message() default "dateTo should not be less than dateFrom!";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
@Valid
를 추가해야 합니다. @POST
@Path("/view-transaction")
@Consumes("application/json")
@ApiOperation(value = "Get transaction history")
public Object fiterBy(@RequestBody @Valid ViewTransactionHistoryRequest request) {
LOGGER.info("Get account contact transaction history");
return accountContactService.viewTransactionHistory(request);
}
@Component
public class JerseyConfig extends ResourceConfig {
@Value("${spring.jersey.application-path}")
private String basePath;
public JerseyConfig() {
register(ConstraintValidatorExceptionMapper.class);
}
}
그게 다야! Postman의 샘플 응답은 다음과 같아야 합니다.
이러한 방식으로 400 잘못된 요청 예외 응답에 의존하는 대신 오류가 있는 필드를 클라이언트에 제공할 수 있습니다.
Reference
이 문제에 관하여(Springboot 애플리케이션에서 Jersey 및 Jax-rs를 사용하여 사용자 정의와 유사한 javax.validator를 구현하는 방법에 대한 단계별 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/logronj/step-by-step-procedure-on-how-to-implement-custom-like-javax-validator-using-jersey-and-jax-rs-in-springboot-application-3m45텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)