duc*_*cin 5 api rest contract swagger raml
问题:如何跨文件拆分swagger定义?那个地区有什么可能性?问题详情如下:
我确实有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
Run Code Online (Sandbox Code Playgroud)
最后两行在这里非常重要!include <filepath>
- 在RAML中有- 我可以将我的整个合同拆分成许多文件,这些文件只是由RAML解析器动态包含(并且所有基于RAML的工具都使用RAML解析器).
我的好处是:
据我所知,swagger支持$ref
允许加载外部文件的关键字.但是这些文件是通过HTTP/AJAX获取的还是只是本地文件?
并且是整个规范支持还是只是一些支持它的工具,而有些工具不支持它?
我在这里发现,swagger的输入必须是一个文件.这对大型项目来说非常不方便:
或者,换句话说,我可以用摇摆乐来实现同样的目标 - 我可以用RAML - 在分割文件方面吗?
该规范允许在多个位置引用但不是在任何地方引用.这些引用的解析取决于托管规范的位置 - 以及您要执行的操作.
对于像渲染动态用户界面之类的东西,那么是的,你需要最终将整个定义加载到"单个对象"中,该对象可以由许多文件组成.如果执行代码生成,则可以直接从文件系统加载定义.但最终有一些摇摆解析器在进行分辨率,这在Swagger中比其他定义格式更细粒度和可控制.
在您的情况下,您将使用指向架构引用的JSON指针:
responses:
200:
description: the response
schema:
Run Code Online (Sandbox Code Playgroud)
通过本地参考
$ref: '#/definitions/myModel'
Run Code Online (Sandbox Code Playgroud)
通过绝对参考:
$ref: 'http://path/to/your/resource'
Run Code Online (Sandbox Code Playgroud)
通过相对引用,这将是'相对于此doc加载的位置'
$ref: 'resource.json#/myModel
Run Code Online (Sandbox Code Playgroud)
通过内联定义
type: object
properties:
id:
type: string
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5563 次 |
最近记录: |