迷糊小妹 2023-03-07 17:45 采纳率: 0%
浏览 27

swagger 参数分组校验

swagger + knife4j 结合展示接口文档,
新增和修改接口使用一个dto,

@NotNull(message = "ID不能为空", groups = Group.Update.class)
 private Long id;

但是 文档中显示,两个接口参数 id 都是必传的。
swagger是否支持 添加接口 显示 id不必传,修改接口id必传呢?

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-03-07 18:07
    关注

    “Devil组”引证GPT后的撰写:

    • Swagger和Knife4j是基于接口文档自动生成和展示的工具,它们并不会对接口参数的校验逻辑进行修改。
    • 如果想在Swagger文档中区分新增和修改接口的DTO参数要求,您可以考虑在DTO类中使用分组校验来实现。具体来说,可以定义两个分组,一个用于新增接口参数校验,另一个用于修改接口参数校验,然后在分组中分别定义id参数是否必传的校验规则。

    举个例子,可以这样修改DTO类的注解

    public class YourDTO {
    
      public interface Add {}
      
      public interface Update {}
      
      @NotNull(message = "ID不能为空", groups = Group.Update.class)
      private Long id;
    
      // ... 其他参数 ...
    
    }
    
    
    

    在新增接口中,可以使用@Validated(YourDTO.Add.class)注解来指定使用Add分组进行参数校验:

    @PostMapping("/add")
    public Result add(@Validated(YourDTO.Add.class) @RequestBody YourDTO dto) {
      // ... 
    }
    
    
    

    而在修改接口中,则使用@Validated(YourDTO.Update.class)注解来指定使用Update分组进行参数校验:

    @PostMapping("/update")
    public Result update(@Validated(YourDTO.Update.class) @RequestBody YourDTO dto) {
      // ... 
    }
    
    
    

    这样,Swagger生成的接口文档中,针对不同的接口,会显示不同的参数要求。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月7日

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?