问题:如何跨文件拆分 swagger 定义?该领域的可能性是什么?问题详情描述如下:
我想要的例子 - 在 RAML
我确实有 RAML 方面的经验,我所做的是,例如:
/settings:
description: |
This resource defines application & components configuration
get:
is: [ includingCustomHeaders ]
description: |
Fetch entire configuration
responses:
200:
body:
example: !include samples/settings.json
schema: !include schemas/settings.json
最后两行在这里很重要!include <filepath>
- 在 RAML 中,我可以将整个合同拆分为许多文件,这些文件只是被 RAML 解析器动态包含(并且所有基于 RAML 的工具都使用 RAML 解析器)。
我从中得到的好处是:
- 我的合同更清晰,更容易维护,因为模式不是内联的
- 但这真的很重要:我可以在其他工具中重用模式文件来进行验证、模拟生成、存根、生成测试等。换句话说,通过这种方式,我可以在合同(RAML,本例)和其他工具(非 RAML,非 swagger,仅基于 JSONschema 的工具)中重用模式文件。
回到大摇大摆
据我所知,swagger 支持$ref
允许加载外部文件的关键字。但是这些文件是通过 HTTP/AJAX 获取的,还是只是本地文件?
是整个规范都支持它,还是只是一些支持它而一些不支持它的工具?
我在这里发现的是,swagger 的输入必须是一个文件。这对于大型项目来说非常不方便:
- 因为尺寸
- 并且因为如果我想使用非招摇的东西,我就不能重用模式
或者,换句话说,我可以用 swagger 实现与 RAML 相同的效果吗 - 在拆分文件方面?