【问题标题】:spring boot request validations not working春季启动请求验证不起作用
【发布时间】:2020-03-14 13:38:08
【问题描述】:

应用背景

  • Spring Boot 1.5.12 版
  • 通过 swagger-codegen-maven-plugin 生成的 Java bean

问题

使用开放 API 3.0 创建的 swagger 模板使用 swagger-codegen-maven-plugin 转换为 pojos..

这里是生成pojo

public class TestPojo {

  @JsonProperty("isNameValid")
   private Boolean isNameValid = null;

 @Schema(
    required = true,
    description = "Checks if name is Valid "
)
public Boolean isIsNameValid() {
    return this.isNameValid;
}

}

这里是使用的招摇模板

openapi: 3.0.1
info:
title: XM MNOLine Domain Definitions
description: |
version: "V0.0.1"

components:
 schemas:

  TestPojo:
      required:
        - isNameValid
      properties:
        isNameValid:
          type: boolean
          description: |
            Checks if name is Valid

在控制器中,@Valid 注释似乎没有任何影响..字段“isNameValid”的空值或无值仍在处理..

 processRequest(@Valid @RequestBody TestPojo request)

我错过了什么..

【问题讨论】:

    标签: java spring spring-boot openapi


    【解决方案1】:

    如果我理解正确,那么您希望您的“isNameValid”字段出现在请求中,否则抛出异常。

    因此,为了使您的字段在请求中成为必填字段,您必须使用 @NotNull 对其进行注释。

    例如

        public class TestPojo {
    
             @JsonProperty("isNameValid")
             @NotNull
             private Boolean isNameValid;
    
             public void setIsNameValid(Boolean isNameValid) {
                 this.isNameValid = isNameValid;
             }
    
             public Boolean isNameValid() {
                 return isNameValid;
             }
    
        }
    

    上面的代码不允许该字段使用null 值,即请求需要有isNameValid

    希望它能解决您的问题。

    如果我误解了您的要求,请告诉我,我们会尽力解决您的问题。

    编辑

    您好,我目前没有任何使用 swagger open api 的正在进行的项目,所以我无法对其进行测试,但您可以查看Validate spring contracts

    希望对您有所帮助,否则请告诉我。

    祝你好运!

    【讨论】:

    • 嘿 prashantdoshi28,感谢您的尝试。我知道添加 @notNull 将解决问题,但我正在使用 openAPI 3.0 规范和 swagger 代码生成器生成 pojos .. 你能帮我了解 OpenAPI 是什么吗3.0 的定义应该是为了强制执行非空约束?
    • 嗨,请检查编辑后的答案,是否有帮助。如果它不起作用,请告诉我。
    【解决方案2】:

    看起来这个问题已经被报告了.. https://github.com/swagger-api/swagger-codegen/issues/7058

    【讨论】:

      猜你喜欢
      • 2016-01-19
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多