列出多个组下的API方法

2023-12-28

我有 Swashbuckle 带注释的代码,如下所示:

[Route("api/Subscribers/{id}/[controller]")]
[Route("api/Organizations/{id}/[controller]")]
public class AddressesController : Controller
{
    [HttpGet("{aid}")]
    [SwaggerResponse(HttpStatusCode.OK, Type = typeof(PostalRecord))]
    public async Task<IActionResult> GetAddress(Guid id, Guid aid)
    {
       //do something
    }

我想使用GroupActionsBy自定义,如本例所示 https://stackoverflow.com/questions/34175018/grouping-of-api-methods-in-documentation-is-there-some-custom-attribute,但我想要上面的GetAddress方法同时包含到与所示的两个路由前缀相对应的两个单独的组中:

[Route("api/Subscribers/{id}/[controller]")]
[Route("api/Organizations/{id}/[controller]")]

换句话说,我希望在两者下列出相同的方法:

  • 订阅者
  • 组织机构

如何才能做到这一点?

顺便说一句,我正在使用 ASP.NET Core (dnx46)。如果还无法使用 Swashbucklee 的 ASP.NET Core 版本来执行此操作,那么仍然可以使用完整的 CLR(Web API 2.2?)示例。

另外,为了更完整地说明我正在尝试做的事情 - 我有一个单独的SO帖子 https://stackoverflow.com/questions/36522617/route-disambiguation-in-asp-net-core-mvc-6.

Update

@venerik 给出的答案让我接近解决方案。当我应用他的示例代码时......

[SwaggerOperation(Tags = new []{"Subscribers", "Organizations"})]

...这会导致 Swagger 列表看起来像这样:

简而言之,“地址”端点现在出现在我想要的标题下,但是,正如红色箭头所示,它们现在也被“交叉列出”;我不希望“订阅者”端点列在“组织”端点下。

我怀疑 [SwaggerOperationFilter] 可能是答案的“另一半”,如果我可以让它删除交叉列出的条目。我以前没有玩过这个机制。

Angst

另外,非常不幸的是 [SwaggerOperation] 只能应用于方法/操作。我宁愿将其应用到课程本身:

[Route("api/Subscribers/{id}/[controller]")]
[Route("api/Organizations/{id}/[controller]")]
[SwaggerOperation(Tags = new []{"Subscribers", "Organizations"})]
public class AddressesController : Controller
{

有什么补救办法吗?


我还没有 ASP.NET Core 的经验,但在 ASP.NET Web API 中,您可以通过SwaggerOperationAttribute。您可以使用此属性向操作添加标签。例如,下一段代码添加标签Subscribers and Organizations:

[SwaggerOperation(Tags = new []{"Subscribers", "Organizations"})]
public async Task<IActionResult> GetAddress(Guid id, Guid aid)
{
   //do something
}

Swagger-UI 按标签对操作进行分组,因此,GetAddress将列在两者下Subscribers and Organizations.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列出多个组下的API方法 的相关文章

随机推荐

  • Lua忽略转义序列

    目前Lua有以下转义序列 a Bell b 退格键 f 换页 n 新队 r 回车 t Tab v 垂直制表符 反斜杠 双引号 单引号 nnn 八进制值 nnn 是 3 个八进制数字 xNN 十六进制值 Lua5 2 LuaJIT NN是两个
  • 使用元素自己的宽度分配左边距

    我想设置margin left元素宽度的负一半 这会获取文档的宽度 services backPanel gt div css margin top this height 2 margin left this width 2 我究竟做错了
  • WebBrowser-Control - 单击链接打开默认浏览器

    我在 WPF 应用程序中使用 WebBrowser Control 例如
  • React/Redux 架构中 API 调用应该放在哪里?

    我正在尝试从 API 检索一些数据并将其传递到我的应用程序中 然而 作为 React Redux 的新手 我想知道从哪里进行这些调用以及如何将其传递到我的应用程序中 我有标准的文件夹结构 组件 减速器 容器等 但我不确定现在将 API 调用
  • 导出 Web 项目

    我使用 java 页面和 eclipse 制作了一个 Web 应用程序 但我不知道如何导出它以供使用 我被要求提供一个 make 文件或其他东西 我还可以通过哪些其他方法从 eclipse 执行此操作 听起来您需要将其导出为 WAR 文件
  • 计算函数极限的最佳方法是什么?

    我计划开发一个应用程序 可以计算用户给出的表达式 函数 的极限 I already have a functional expression evaluator which will definitely come in handy My
  • 为什么 Pylint 认为在条件值中使用 len(SEQUENCE) 不正确?

    考虑这个代码片段 from os import walk files for dirpath filenames in walk mydir More code that modifies files if len files 0 lt C
  • 算术左移时间复杂度

    是什么时间复杂度of 算术左移 n 位操作数的算术右移 运算符 例如 x y 复杂度 用 O 表示法 是当输入大小变得越来越大时算法所花费的时间的渐近特征 对于只能接受有限数量输入的算法来说毫无意义 lt lt 可以采用 2 32 32 个
  • 仅倾斜前后的一侧以获得平箭头

    我创建了一些虚拟的面包屑步骤 第一个面包屑步骤需要在左侧有一个正常的平坦边框 这已完成 悬停时 我需要显示每个面包屑项目的黑色边框 但唯一的问题是悬停时 对于第一个面包屑步骤 我没有像预期的那样在左侧得到平坦的边框 以下是悬停时的预期结果
  • 如何让 Spotify 和其他 Android 音乐应用程序按意图搜索和播放?

    我想创建一个MEDIA PLAY FROM SEARCH https developer android com guide components intents common html PlaySearch 或其他 意图 将在任何主要 A
  • 等待 AJAX 调用 (POST) 完成

    我正在使用 jQuery UI 选项卡 其中每个选项卡都有不同的表单 用户输入各种数据后 他们提交整组选项卡 以便每个选项卡异步发布到服务器 这运作良好 我在这里没有任何问题 然而 我遇到的问题是 我发布的最后一个表单必须在所有其他帖子完成
  • 正则表达式仅适用于第一次出现? [复制]

    这个问题在这里已经有答案了 假设我有以下字符串 这是一个测试 测试 这只是一个测试 结束 我想选择this is a test and this is only a test 我到底需要做什么 我尝试的以下正则表达式产生了一个愚蠢的结果 t
  • Angularjs 多个指令 [gridsection, gridsection] 要求模板:

    我收到错误 Multiple directives gridsection gridsection asking for templateon div 用这个代码 我不明白我是如何使用嵌套指令的或者是什么导致了这个 html页面 div d
  • 我们可以使用检测惯用法来检查类是否具有具有特定签名的成员函数吗?

    鉴于 减少 实施检测惯用语 http www open std org jtc1 sc22 wg21 docs papers 2015 n4502 pdf namespace type traits template
  • Android 计时器计划与 ScheduleAtFixedRate

    我正在编写一个每 10 分钟记录一次音频的 Android 应用程序 我正在使用计时器来做到这一点 但是schedule和scheduleAtFixedRate有什么区别呢 使用其中一种比另一种有性能优势吗 差异最好的解释是这个非 Andr
  • 如何使用 Mono 和 mkbundle 将简单的 .Net 控制台项目转换为可移植的 exe?

    我想将简单的纯 Net 2 0 控制台实用程序转换为便携式 exe 我可以将其放在 USB 记忆棒上并运行 而不必担心 CLR 和框架库是否安装在特定计算机上 Stackoverflow 已经有一些信息 https stackoverflo
  • 在相邻数字的有序范围中查找间隙

    这是 Steven Skiena 的 算法设计手册 第二版 第 143 页中的作业练习 假设给你一个不同整数的排序序列 A1 A2 An 取自1 to m where n lt m 给一个O lgN 寻找整数的算法 lt m不存在于A 要获
  • 将 Spark 检查点写入 S3 太慢

    我正在使用 Spark Streaming 1 5 2 并使用 Direct Stream 方法从 Kafka 0 8 2 2 中提取数据 我已启用检查点 以便我的驱动程序可以重新启动并从中断处继续 而不会丢失未处理的数据 检查点被写入 S
  • 如何在perl中读取每3行?

    抱歉英语不好 我有一个这样的txt文件 id 1 name a sex m id 2 name b sex f 所以我想将该文件的每 3 行读取到一个数组中 id gt 1 name gt a sex gt m id gt 2 name g
  • 列出多个组下的API方法

    我有 Swashbuckle 带注释的代码 如下所示 Route api Subscribers id controller Route api Organizations id controller public class Addres