如何编写自定义排序器以在 UI 中按名称对 springdoc swagger 标签进行排序?

Posted

技术标签:

【中文标题】如何编写自定义排序器以在 UI 中按名称对 springdoc swagger 标签进行排序?【英文标题】:How do I write a custom sorter to sort my springdoc swagger tags by name in the UI? 【发布时间】:2020-07-03 17:00:53 【问题描述】:

我正在使用最新版本 (1.3.0) 的 springdoc-openapi。现在我想按“名称”属性在 UI 中对标签进行排序

我知道“springdoc.swagger-ui.tagsSorter”配置,并且我可以使用自定义排序器功能。但我找不到函数应该是什么样子的例子。

我尝试了以下似乎不起作用的方法:

springdoc.swagger-ui.tagsSorter=(a, b) => a.get("name").localeCompare(b.get("name"))

【问题讨论】:

【参考方案1】:

默认情况下,您可以按字母顺序对标签进行排序:

https://springdoc.org/faq.html#how-can-i-sort-endpoints-alphabetically

您可以控制标签顺序,使用 OpenApiCustomiser 并定义您自己的比较器:

@Bean
public OpenApiCustomiser sortTagsAlphabetically() 
    return openApi -> openApi.setTags(openApi.getTags()
            .stream()
            .sorted(Comparator.comparing(tag -> StringUtils.stripAccents(tag.getName())))
            .collect(Collectors.toList()));

【讨论】:

既然Springdoc对标签、字段值按字母顺序排序,我们如何禁用这个呢? 按预期工作,谢谢+1【参考方案2】:

参考@brianbro's answer,如https://springdoc.org/faq.html#how-can-i-sort-endpoints-alphabetically建议的那样

我加了

@Tag(name="1. Admin endpoints")

@Tag(name = "2. Everyone's enpoints!")

及以下对 application.yml 的支持:

springdoc.swagger-ui.tagsSorter=alpha

并且可以看到它们根据我的招摇 UI 上的编号进行排序。

【讨论】:

以上是关于如何编写自定义排序器以在 UI 中按名称对 springdoc swagger 标签进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建自定义插值器以在 android 中应用翻译动画

创建自定义导航栏渲染器以在 xamarin 表单 IOS 项目中添加自定义后退按钮图标

Select2 自定义匹配器以在组标题匹配时保持选项打开

在Objective-C中按一个属性对自定义对象的NSSet进行排序

在 Eloquent 中按自定义顺序对集合进行排序 [重复]

在自定义 foreach 循环中按字母顺序对结果进行排序