@RestController也接受不需要的标签



我使用spring-boot创建了一个spring-REST web服务。它接受requestbody中的XML。问题是,它也接受不需要的标签,并给出结果,我想限制并通知用户这一点。如何在请求体(xml(到达控制器之前或通过任何其他方式根据xsd验证它。请提出建议。

控制器:

@PostMapping(value = "/webservice/{text}", produces = { MediaType.APPLICATION_XML_VALUE })
public ServiceResult processRequest(@PathVariable("text") String text,
@RequestBody Request Request) {

豆类:

@XmlRootElement(name="Request")
@XmlType(propOrder = {"requestHeader", "requestBody"})
public class Request implements Serializable {
private RequestHeader requestHeader;
private RequestBody requestBody;
@XmlElement(name="RequestHeader")
public RequestHeader getRequestHeader() {
return requestHeader;
}
public void setRequestHeader(RequestHeader requestHeader) {
this.requestHeader = requestHeader;
}
@XmlElement(name="RequestBody")
public RequestBody getRequestBody() {
return requestBody;
}
public void setRequestBody(RequestBody requestBody) {
this.requestBody = requestBody;
}
}

然后您可能希望在不需要的标记上失败:https://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/DeserializationFeature.html#FAIL_ON_UNKNOWN_PROPERTIES此外,如果您可以使用bean验证来验证值。但是,此验证与xsd 无关

将以下属性添加到application.properties文件中解决了我的问题。

spring.jackson.deserialization.fail-on-unknown properties=true

最新更新