如何在 swagger.json 的 class 标题中添加连字符

How to add hyphen in class title of swagger.json

我正在使用 Asp .net 核心 3.1。我想更新 Swashbuckler.AspNetCore 的 swagger.json 中的控制器名称,这是一个自动生成的文件。 例如 class 标题为 School-Admin

我正在使用 RestFul APIs,在 Restful APIs 中,我们使用连字符分隔的实体名称 例如

Controller School-Admin
[GET] api/school-admins/1

因为 c# 不允许在 class 名称中使用连字符,所以我无法更改我的控制器名称..我想实现这个 usinh swagger..json

为了实现这一点,我在 [Route("api/school-admins")] 中添加了一个连字符 现在,它仅适用于端点,并且不会在 class 标题中添加连字符。它在 swagger UI 上显示 API 和 class 名称为:

SchoolAdmin => Class Title not hyphen separated on swagger UI yet
GET api/school-admins/{id} => API

我的目标是在 swagger UI 上显示分隔的 class 名称连字符,因为 swash buckle 会自动创建 swagger.json,所以它添加了与 中提到的相同的 class 名称。由于语言限制,没有连字符分隔的 cs 文件。 是否可以在 swagger.json 中更改我的 class 标题而不影响自动生成的功能?我正在使用 Swashbuckle.AspNetCore,其中 swagger.json 自动生成,而且该文件不可编辑。我可以更改此 auto-generated swagger.json 中的 class 名称并将其推送到源代码管理中,但它不应影响 swagger.json 的 auto-generated 功能。例如,如果我以后添加一个新的 API 或控制器 swagger.json 应该是 auto-updated 有新的变化只有 Dev 需要添加新的 class 名称连字符分隔如果需要的话。

发帖帮助他人 我使用 APIExplorerSettings 解决了它,我以前没有意识到这一点。 在 startup.cs 我使用

SwaggerGen(){
options.DocInclusionPredicate((_, api) => !string.IsNullOrWhiteSpace(api.GroupName));
options.TagActionsBy(api => new[] { api.GroupName });}

在类

[ApiExplorerSettings(GroupName = "school-admin")]

看看魔法