从有效的openapi规范中提取json模式的实用程序

openapi2jsonschema的Python项目详细描述


openapi2jsonschema

从 有效的OpenAPI规范。

为什么

openapi包含一个使用json超集的definitions类型的列表 架构。这些是各种openapi兼容工具在内部使用的。我 但是我发现自己想单独使用这些模式 现有OpenAPI工具。为定义的类型生成单独的架构 在openapi中,允许构建各种独立的工具 很容易维护,因为规范定义是共享的。

安装

openapi2jsonschema是用python实现的。假设你有一个 python intepreter和pip已安装,您应该可以使用以下命令进行安装:

pip install openapi2jsonschema

这还没有经过广泛的测试,目前在我的 机器状态。

用法

最简单的用法是将openapi2jsonschema工具指向一个url 包含json(或yaml)openapi定义,如下所示:

openapi2jsonschema https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json

这将在schemas目录中生成一组模式。工具 提供许多选项来修改输出:

$ openapi2jsonschema --help
Usage: openapi2jsonschema [OPTIONS] SCHEMA

  Converts a valid OpenAPI specification into a set of JSON Schema files

Options:
  -o, --output PATH  Directory to store schema files
  -p, --prefix TEXT  Prefix for JSON references (only for OpenAPI versions
                     before 3.0)
  --stand-alone      Whether or not to de-reference JSON schemas
  --kubernetes       Enable Kubernetes specific processors
  --strict           Prohibits properties not in the schema
                     (additionalProperties: false)
  --help             Show this message and exit.

示例

我的特定用例能够验证kubernetes 没有kubernetes客户机的配置文件,如kubectl和 没有服务器。为此,我有一个bash脚本,如下所示:

#!/bin/bash -xe# This script uses openapi2jsonschema to generate a set of JSON schemasfor# the specified Kubernetes versions in three different flavours:##   X.Y.Z - URL referenced based on the specified GitHub repository#   X.Y.Z-standalone - de-referenced schemas, more useful as standalone
documents
#   X.Y.Z-local - relative references, useful to avoid the network
dependency

REPO="garethr/kubernetes=json-schema"declare -a arr=(1.6.6
                1.6.5
                1.6.4
                1.6.3
                1.6.2
                1.6.1
                1.6.0
                1.5.6
                1.5.4
                1.5.3
                1.5.2
                1.5.1
                1.5.0
                )for version in "${arr[@]}"doschema=https://raw.githubusercontent.com/kubernetes/kubernetes/v${version}/api/openapi-spec/swagger.json
    prefix=https://raw.githubusercontent.com/${REPO}/master/v${version}/_definitions.json

    openapi2jsonschema -o "${version}-standalone" --stand-alone "${schema}"
    openapi2jsonschema -o "${version}-local""${schema}"
    openapi2jsonschema -o "${version}"" --prefix "${prefix}" "${schema}"done

运行此脚本的输出可以在随附的 garethr/kubernetes-json-schema

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用Java实现OpenCV视频捕获   java中泛型的组合和继承是确保类型和避免原始类型的正确方法   java转换错误未在类别中返回全名   Java正则表达式问题:###tag1@@@value1###tag2@@@value2###tag3@@@value3###   运行扫描程序的java   用于返回集合集合的java Neo4j查询   java从第行拆分(“[\t]”)的是什么   行在应该旋转时不会重叠   encryption Java AES Decryption获取解密的十六进制而不是解密的字符串   java分配给同名的静态final字段   java如何获取表的索引值?   java classnotfound异常,但看起来一切正常。有人能告诉我启动功能是否错误吗?   如何使用JavaApachePOI将表放在word的头中?   对一个将Json转换为XML的程序进行改进,并在Java中使用viceversa   java如何检索firestore并将其绘制成图表