当前位置: 首页 > 知识库问答 >
问题:

如何在OpenAPI/Swagger中指定递归路径

赵雅懿
2023-03-14

我想为我的Swagger API创建一个递归规范。这个概念似乎没有出现在Swagger文档中,所以我怀疑这是不可能的。因此,我也愿意接受任何由Swagger支持的替代解决方案。

例如,我试图创建一个类似文档的结构。每个文档都有部分,每个部分都有文本和自己的部分。我计划使用这样的APIendpoint:

  • http://a.b.com/docs/{文档ID}
  • http://a.b.com/docs/{文档ID}/节/{节ID}
  • http://a.b.com/docs/{文件ID}/节/{节ID}/节/{节ID}
  • http://a.b.com/docs/{文件编号}/节/{节号编号}/节/{节号编号}/节/{节号编号}

如果我使用正则表达式样式,我会在API规范中使用类似的内容:

...    
paths:
    /docs/{document-id}:
        get:
          ...
    /docs/{document-id}(/section/{section-id))+:
        get:
          ...

所以问题是:

  1. 如何在Swagger/OpenAPI规范中表示任意嵌套的资源
  2. 有没有替代方法可以消除递归规范的需要

共有1个答案

黄宏毅
2023-03-14

我建议使用更简单的API设计。在一些公司中,限制最多为2个路径参数。只要你做得更多,你就会突破可用性的极限。

 类似资料:
  • 我只想从使用Log4j(v2.8.2)的Java移植以下代码: 问题在于newBuilder()方法,该方法在log4j中定义为某种递归泛型: Java代码会自动推断泛型参数,而Kotlin的情况并非如此。在Kotlin中调用此方法有什么解决方案吗? 我在Kotlin尝试的代码: 它有以下错误: 错误:(90,48)静态编程语言:类型推断失败:没有足够的信息来推断参数B的乐趣! 当代码在粘贴时自动

  • 我有一个服务,它可以基于头有两种不同的主体参数。 例如。对于路径: > 如果使用 ,则 POST 可以将 作为正文参数。 如果使用了,那么POST应该使用一些不同的主体参数来调用函数并返回不同的响应。 关于如何在OpenAPI(Swagger)中体现这一点,有什么建议吗?

  • 我正在使用OpenAPI/Swagger来指定我的API。 有一件事我找不到,那就是如何指定一个集合。 我正在使用https://editor.swagger.io/我输入了整个API。对于要指定为集的属性,我编写了以下代码: 我本以为uniqueItems会起作用并生成一个Set,但事实并非如此。相反,生成了以下代码: 有没有办法生成类似 而是? 我在SO中找到了一个可能的解决方案,但这需要在p

  • 我试图从我的代码库生成数据来填充OpenAPI 3.0输入。 我有一个restendpoint,用于将文件上载到服务器。 我有一个表单作为聚合vaadin上传组件,用于上传文件。路径是,表单参数名是。表单正确地将文件上传到服务器,所以这不是问题所在。 服务器endpoint使用超文本标记语言窗体规范中的XQRS RestXQ上传文件来实现。 我正在尝试为多部分文件上传的OpenAPI 3.0UI创