登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情~
代码拉取完成,页面将自动刷新
开源项目
>
开发工具
>
开发/调试
&&
WEB应用开发
>
WebUI组件/框架
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
790
Star
7K
Fork
1.5K
GVP
萧明
/
knife4j
代码
Issues
248
Pull Requests
2
Wiki
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
113
ApiRule使用注解策略时,支持指定多个注解之间的关系
已合并
悟道:dev
萧明:dev
悟道
创建于 2025-01-20 12:28
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
使用场景: 使用knife4j配置文件(knife4j.openapi)指定接口文档配置时,无法覆盖"只有类标记有 **@Api** 注解 **且** 方法标记有 **@ApiOperation** 的接口才进行注册"这一场景。 问题分析: springfox 的RequestHandlerSelector是支持and操作的,如: ```java Docket docket = new Docket(DocumentationType.SWAGGER_2) .select() //只有标记了@Api+@ApiOperation的方法才会暴露出给swagger .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); ``` 迁移到knife4j后,使用配置文件(knife4j.openapi)的方式指定接口文档配置,不支持进行and,底层代码写死了是or操作: ``` knife4j: enable: true openapi: description: 描述信息,略。 title: 测试项目 version: 1.0 group: WEB: api-rule: ANNOTATION api-rule-resources: # 这里目前是or的关系,不支持and - Api - ApiOperation ``` ``` if (annotationClassName.equalsIgnoreCase(AnnotationClassEnums.Api.getFullPath())) { first = first.or(RequestHandlerSelectors.withClassAnnotation(clazz)); } else { first = first.or(RequestHandlerSelectors.withMethodAnnotation(clazz)); } ``` 因此,在`Knife4jDocketInfo`中添加了`apiRuleAnnoUseAnd`来标识注解是采用`and` 或 `or`进行运算,并重载了`RequestHandlerSelectorUtils#multipleAnnotations`以支持该场景。
怎样手动合并此 Pull Request
git checkout dev
git pull https://gitee.com/zkyong/knife4j.git dev
git push origin dev
评论
0
提交
1
文件
3
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
唱诗歌读圣经
bibles
员外
yuanwai
shenkai22
hangzhou_hengjing
千枫飞叶
liuriver
Mr.Tao
tycaa
萧明
xiaoym
未设置
最少人数
0
测试
唱诗歌读圣经
bibles
员外
yuanwai
shenkai22
hangzhou_hengjing
千枫飞叶
liuriver
Mr.Tao
tycaa
萧明
xiaoym
未设置
最少人数
0
优先级
不指定
严重
主要
次要
不重要
标签
标签管理
未设置
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
4.6.0
参与者
(1)
Java
1
https://gitee.com/xiaoym/knife4j.git
git@gitee.com:xiaoym/knife4j.git
xiaoym
knife4j
knife4j
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册