私はApache CXF、JAX-RS、JSR-303検証を使用しています。 無効なリクエストオブジェクトの検証が正しく機能しています。HTTP 400の応答と検証エラーがログに記録されていますが、応答本体が空です。 レスポンスボディの検証エラーについての詳細はどうですか?リクエストの検証時に空のレスポンスボディエラー(Apache CXF、JAX-RS)
私はSpring Boot 1.5.6、Apache CXF 3.1.2を使用します。 Java構成で
IセットアップCXFが
@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ペイロードを取得する)をオーバーライドすることもできます。 –