0
我正在使用Apache CXF,JAX-RS和JSR-303驗證。 對於無效的請求對象,驗證工作正常我在日誌中有HTTP 400響應和驗證錯誤,但我的響應正文爲空。 如何獲得有關響應正文中驗證錯誤的詳細信息?請求驗證時出現空響應體錯誤(Apache CXF,JAX-RS)
我使用Spring Boot 1.5.6,Apache CXF 3.1.2。
我設置CXF在Java配置
@Bean
BeanValidationFeature commonValidationFeature() {
return new BeanValidationFeature();
}
@Bean
ValidationExceptionMapper exceptionMapper() {
return new ValidationExceptionMapper();
}
@Bean
JAXRSParameterNameProvider parameterNameProvider() {
return new JAXRSParameterNameProvider();
}
@Bean
BeanValidationProvider validationProvider() {
return new BeanValidationProvider(parameterNameProvider());
}
@Bean
JAXRSBeanValidationInvoker validationInvoker() {
final JAXRSBeanValidationInvoker validationInvoker = new JAXRSBeanValidationInvoker();
validationInvoker.setProvider(validationProvider());
return validationInvoker;
}
@Bean
JAXRSBeanValidationFeature validationFeature() {
final JAXRSBeanValidationFeature feature = new JAXRSBeanValidationFeature();
feature.setProvider(validationProvider());
return feature;
}
然後我用這些豆子設置org.apache.cxf.endpoint.Server
JAXRSServerFactoryBean serverFactoryBean = new JAXRSServerFactoryBean();
serverFactoryBean.setProvider(new JacksonJsonProvider(objectMapper));
serverFactoryBean.setProvider(exceptionMapper());
serverFactoryBean.setFeatures(Arrays.asList(commonValidationFeature(),
swagger2Feature()));
serverFactoryBean.setBus(bus);
serverFactoryBean.setInvoker(validationInvoker());
serverFactoryBean.setServiceBeans(Collections.singletonList(myApiImplementation));
return serverFactoryBean.create();
如何在響應體有關驗證錯誤的詳細信息?是否有一些合理的默認值(比如在Spring MVC中?)我可以爲驗證錯誤定製錯誤響應嗎?
使用較新的CXF版本,您甚至可以重寫格式化內容的方法(例如,爲了獲取JSON有效負載而不是明文)。 –