【问题标题】:@RestController accepting unwanted tags also@RestController 也接受不需要的标签
【发布时间】:2019-04-08 17:15:49
【问题描述】:

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

控制器:

@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;
    }
}

【问题讨论】:

  • 你能分享你到目前为止做了什么吗?
  • 加一些代码理解
  • 已添加,请检查
  • 你是在用 Jackson 来解现实吗?
  • @lopushen 是的,我正在使用 Jackson。

标签: spring rest web-services spring-boot


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多