【发布时间】:2016-06-03 19:18:00
【问题描述】:
问题:如何跨文件拆分 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
据我所知,swagger 支持$ref 关键字,它允许加载外部文件。但是这些文件是通过 HTTP/AJAX 获取的还是只是本地文件?
是整个规范都支持它,还是只是一些工具支持它而一些不支持?
我发现here 是swagger 的输入必须是一个文件。这对于大型项目来说非常不方便:
- 因为大小
- 而且因为如果我想使用一些不招摇的东西,我就不能重用架构
或者,换句话说,我可以使用 swagger 实现与 RAML 相同的效果吗?就拆分文件而言?
【问题讨论】:
标签: api rest swagger contract raml