Swagger之非空校验

@NotNull
适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty)
@NotBlank
适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0
@NotEmpty
适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0
在使用这些注解的时候,还需要注意一点(注:否则会造成注解无效哦!!),那就是在Controller 层定义方法的时候在参数位置上加上 @Valid(javax.validation.Valid)

public CommonResult<Object> AddQualityGuarantee(@Valid @RequestBody AddQualityGuaranteeVO params) {
}
//如果引入的参数是一个对象,对象头参数头上加上@Valid()
@ApiModel("XXXXXXXXX")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AddQualityGuaranteeVO {

    @ApiModelProperty(value = "车辆信息", required = true, example = "")
    @Valid()
    private CarInfoVO carInfoVO;

    @ApiModelProperty(value = "XXXXXXXXX", required = true, example = "")
    @Valid()
    private ProductInfoVO productInfoVO;
}
//属性
@ApiModel("车辆信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CarInfoVO {

    @ApiModelProperty(value = "车架号", required = true, example = "")
    @NotBlank(message = "车架号不能为空")
    private String carFrameNum;

    @ApiModelProperty(value = "车主姓名", required = true)
    @NotBlank(message = "车主姓名不能为空")
    private String customerName;

    @ApiModelProperty(value = "联系方式", required = true)
    @NotBlank(message = "联系方式不能为空")
    private String cellphone;
}

作用范围APIAPI常用参数作用位置
协议集描述@Api@Api(tags = {“tag1”,“tag2”,“…”})controller类
协议描述@ApiOperation@ApiOperation(value = “功能描述”,notes = “备注”)controller类的方法
描述返回对象的意义@ApiModel@ApiModel(value=“类名”,description=“类描述”)返回对象类
对象属性@ApiModelProperty@ApiModelProperty(value = “类属性描述”,required = true,example = “属性举例”,notes = “备注”)出入参数对象的字段
非对象参数集@ApiImplicitParams@ApiImplicitParams({@ApiImplicitParam(),@ApiImplicitParam(),…})controller的方法
非对象参数描述@ApiImplicitParam@ApiImplicitParam(name = “参数名”,value = “参数描述”,required = true,paramType = “接口传参类型”,dataType = “参数数据类型”)@ApiImplicitParams的方法里用
Response集@ApiResponses@ApiResponses({ @ApiResponse(),@ApiResponse(),…})controller的方法
Response@ApiResponse@ApiResponse(code = 10001, message = “返回信息”)@ApiResponses里用
忽略注解@ApiIgnore@ApiIgnore类,方法,方法参数
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Swagger3 中的 `oneOf` 关键字用于定义一个对象可以具有多个属性中的一个。在参数校验方面,需要使用组合关键字 `anyOf` 来完成。 具体实现步骤如下: 1. 在 `parameters` 中定义一个 `schema` 对象,并在其中使用 `anyOf` 关键字以及多个 `properties` 对象。示例如下: ``` parameters: - in: body name: requestBody required: true schema: anyOf: - $ref: '#/components/schemas/Property1' - $ref: '#/components/schemas/Property2' ``` 2. 在 `components` 中定义多个 `schemas` 对象,分别对应 `anyOf` 中的每个 `properties` 对象。示例如下: ``` components: schemas: Property1: type: object properties: prop1: type: string maxLength: 10 Property2: type: object properties: prop2: type: integer maximum: 100 ``` 注意:对每个 `properties` 对象进行参数校验时,需要在其中添加相应的参数校验规则,例如 `maxLength` 和 `maximum`。 这样就完成了使用 `oneOf` 进行参数校验的实现。 ### 回答2: Swagger 3 是一个流行的 API 文档规范和工具,而 "oneof" 是一个用于定义参数的关键字。在 Swagger 3 中,可以使用一些技巧来进行参数校验。 首先,我们需要在 Swagger 3 的定义文件中使用 "oneof" 关键字来定义参数。这样可以确保参数的取值只能是定义中的一个。 例如,假设我们有一个接口需要传入一个身份类型的参数,可以是 "学生" 或者 "教师"。我们可以在 Swagger 3 定义文件中,使用 "oneof" 关键字来定义该参数: ```yaml paths: /api/something: post: parameters: - name: identity in: query required: true schema: oneOf: - type: string enum: - 学生 - type: string enum: - 教师 ``` 上面的例子中,我们使用了 "oneOf" 嵌套了两个枚举类型的参数。这样,在调用该接口时,只能选择其中一个身份类型。 接下来,在服务器端代码中,我们可以通过检查参数的取值来进行校验。例如,我们可以使用以下伪代码: ```python def handle_request(identity): if identity == "学生": # 处理学生参数 elif identity == "教师": # 处理教师参数 else: # 参数错误,返回错误信息 ``` 通过以上方法,我们可以轻松实现 Swagger 3 中的参数校验。 需要注意的是,由于 Swagger 3 只是一个 API 规范和工具,实际的参数校验逻辑需要在服务器端代码中实现。 ### 回答3: 在 Swagger 3 中,我们可以使用 `oneOf` 关键字来定义一个参数的多种可能取值。在进行参数校验时,我们可以使用一些针对 `oneOf` 的校验规则。 首先,我们需要在 Swagger 规范中定义 `oneOf` 的内容。例如,假设我们有一个参数 `status`,它可以是 "active" 或 "inactive"。我们可以使用以下代码定义它的取值范围: ``` parameters: - name: status in: query schema: oneOf: - type: string enum: - active - type: string enum: - inactive ``` 通过上述定义,我们限定了 `status` 参数的取值范围为 "active" 或 "inactive"。当我们输入其他值时,Swagger 将会进行参数校验并返回相应的错误信息。 另外,我们还可以使用一些自定义的校验规则来对参数进行详细的校验。例如,我们可以通过正则表达式对参数进行进一步的限制。示例如下: ``` parameters: - name: status in: query schema: oneOf: - type: string pattern: ^(active|inactive)$ ``` 通过上述定义,Swagger 将会对 `status` 参数进行正则表达式的校验,只允许值为 "active" 或 "inactive"。当我们输入其他值时,Swagger 将会返回相应的错误信息。 总结起来,Swagger 3 中的 `oneOf` 可以帮助我们定义一个参数的多种可能取值范围,并可以通过自定义的校验规则对参数进行进一步的限制和校验

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值