Automatisch generieren Sie einen Client-SDK aus Ihrem OpenAPI 3.0.0-3.1.0-Dokument mit OpenAPI JSON-Schema-Generator. Dieses Projekt ist ein Codegenerator, der sich auf die Unterstützung aller OpenAPI- und JSON -Schema -Funktionen konzentriert.
OpenAPI JSON Schema Generator ermöglicht die automatische Generation von API-Client-Bibliotheken (SDK-Generator) mit einem OpenAPI-Dokument (3.0.0-3.1.0* werden unterstützt). Dieses Projekt konzentriert sich darauf, die Ausgabe 100% mit OpenAPI + JSON -Schema -Spezifikationen zu konform zu machen. Ziel ist es, alles, was in OpenAPI + den enthaltenen JSON -Schema -Spezifikationen definiert wurde, vollständig zu unterstützen, damit Entwickler alle diese Funktionen verwenden können.
Derzeit werden die folgenden Sprachen/Frameworks unterstützt:
| Besonderheit | Python | Java | Kotlin |
|---|---|---|---|
| Generatorstatus | stabil | stabil | stabil |
| OpenAPI V3.0.0-3.1.0 Einnahme | X | X | X |
| JSON Schema 2020-12 Unterstützung (Komponenten/Schemas) | X | X | X |
| Komponentenschema -Klassen + Dokumentation erstellt | X | X | X |
| Dokumentation für andere Komponententypen: Header, Parameter, RequestBodies, Ressponsen, SecuritySchemes | X | X | |
| Methoden, die für Endpunkte generiert wurden Das für sie generierte JSON + -Dokumente sendet/empfangen | X | X |
from 1var , hi-there usw. unterstützt werden inWir verwenden einen Discord -Server als Ort, um Fragen zu stellen und uns gegenseitig zu helfen. Es bietet Funktionen, die Slack sehr ähnlich sind. Sie können sich uns hier anschließen: https://discord.gg/mhb8wequyq
Ja; Beiträge sind willkommen! Senden Sie eine PR ein, wenn Sie ein neues Server -Gerüst, Client -SDK oder Dokumentationsgenerator in jeder Sprache hinzufügen möchten.
Die OpenAPI-Spezifikation wurde seit der ersten Schaffung im Jahr 2010 überarbeitet. Das OpenAPI-Json-Schema-Generator-Projekt verfügt über die folgenden Kompatibilitäten mit der OpenAPI-Spezifikation:
| OpenAPI JSON Schema Generator Version | OpenAPI -Spezifikation Kompatibilität |
|---|---|
| 3.3.0+ | 3.0.0 - 3.1.0* |
| 3.1.0 - 3.2.1 | 3.0.0 - 3.1.0 |
| 1.0.0 - 3.0.0 | 3.0.0 - 3.0.3 |
OpenAPI V3.1.0 Spezifikationsunterstützung enthält diese neuen/aktualisierten 2020-12 JSON-Schema-Schlüsselwörter:
Hinweis: Diese Funktionen können auch in den Funktionen des Generatordokumentationsschemas angezeigt werden
Um aus der Quelle zu erstellen, benötigen Sie die folgenden und in Ihrem $PATH: erhältlich:
Java 11
Apache Maven 3.9.3 oder mehr
Nach dem Klonen des Projekts können Sie es mit diesem Befehl aus der Quelle erstellen:
mvn clean install Der Standardaufbau enthält eine minimale statische Analyse (über Checkstyle). Verwenden Sie das static-analysis , um Ihren Build mit PMD und Spotbugs auszuführen:
mvn -Pstatic-analysis clean installDas Docker -Bild fungiert als eigenständige ausführbare Datei. Es kann als Alternative zur Installation über Homebrew oder für Entwickler verwendet werden, die Java nicht installieren oder die installierte Version aktualisieren können.
Um Code mit diesem Bild zu generieren, müssen Sie einen lokalen Standort als Volumen montieren.
Beispiel:
docker run --rm -v " ${PWD} :/local " openapijsonschematools/openapi-json-schema-generator-cli generate
-i https://raw.githubusercontent.com/openapi-json-schema-tools/openapi-json-schema-generator/master/src/test/resources/3_0/petstore.yaml
-g python
-o /local/out/python Der generierte Code befindet sich unter ./out/python im aktuellen Verzeichnis.
Sie können bin/run-in-docker.sh verwenden, um die gesamte Entwicklung durchzuführen. Dieses Skript ordnet Ihr lokales Repository /gen im Docker -Container ab. Es ordnet auch ~/.m2/repository an den entsprechenden Containerort ab.
Um mvn package auszuführen:
git clone https://github.com/openapi-json-schema-tools/openapi-json-schema-generator
cd openapi-json-schema-generator
./bin/run-in-docker.sh mvn packageBuild -Artefakte sind jetzt in Ihrem Arbeitsverzeichnis zugänglich.
Nach dem Erstellen fungiert run-in-docker.sh als ausführbar für OpenAPI-JSON-Schema-Generator-Cli. Um Code zu generieren, müssen Sie in ein Verzeichnis unter /gen (z. B. /gen/out ) ausgeben. Zum Beispiel:
./bin/run-in-docker.sh help # Executes 'help' command for openapi-json-schema-generator-cli
./bin/run-in-docker.sh list # Executes 'list' command for openapi-json-schema-generator-cli
./bin/run-in-docker.sh /gen/bin/python-petstore.sh # Builds the Python client
./bin/run-in-docker.sh generate -i src/test/resources/3_0/petstore.yaml
-g go -o /gen/out/python-petstore -p packageName=petstore_api # generates python client, outputs locally to ./out/python-petstore Wenn ein solcher Fehler auftritt, führen Sie einfach den Befehl MVN Clean install -u aus:
org.apache.maven.lifecycle org.apache.maven.plugins: maven-surefire-plugin: 2.19.1: test: java.lang.ExceptionininitializerError kann nicht an java.io.ioxception gegossen werden
./run-in-docker.sh mvn clean install -UDas Ziel nicht ausführen organisch ausführen: Gradle-Maven-Plugin: 1.0.8: Aufrufen (Standard) auf Projekt OpenAPI-JSON-Schema-Generator-Gradle-Plugin-mvn-Wrapper: org.gradle.tooling 'https://services.gradle.org/distributions/gradle-4.7--Bin.zip'
Im Moment: Keine Lösung für diesen Fall: |
Um einen Python -Kunden für petstore.yaml zu generieren, führen Sie bitte Folgendes aus
git clone https://github.com/openapi-json-schema-tools/openapi-json-schema-generator
cd openapi-json-schema-generator
mvn clean package
java -jar target/openapi-json-schema-generator-cli.jar generate
-i https://raw.githubusercontent.com/openapi-json-schema-tools/openapi-json-schema-generator/master/src/test/resources/3_0/petstore.yaml
-g python
-o /var/tmp/python_api_client (if you're on Windows, replace the last command with java -jar targetopenapi-json-schema-generator-cli.jar generate -i https://raw.githubusercontent.com/openapi-json-schema-tools/openapi-json-schema-generator/master/src/test/resources/3_0/petstore.yaml -g python -oc:temppython_api_client )
Um eine Liste der verfügbaren allgemeinen Optionen zu erhalten, führen Sie bitte java -jar target/openapi-json-schema-generator-cli.jar help generate
Um eine Liste von Python-angegebenen Optionen zu erhalten (die über die Option -c an den Generator mit einer Konfigurationsdatei übergeben werden können), führen Sie bitte java -jar target/openapi-json-schema-generator-cli.jar config-help -g python
Sie können einen Kunden wie folgt gegen die Petstore -API erstellen:
./bin/generate-samples.sh ./bin/generate_samples_configs/python.yaml(Installieren Sie unter Windows Git Bash, damit Windows den obigen Befehl ausführen kann.)
In diesem Skript wird der Generator mit diesem Befehl ausgeführt:
java -jar target/openapi-json-schema-generator-cli.jar generate
-i https://raw.githubusercontent.com/openapijsonschematools/openapi-json-schema-generator/master/src/test/resources/3_0/petstore.yaml
-g python
-t src/main/resources/python
--additional-properties packageName=petstore_api
-o samples/client/petstore/pythonmit einer Reihe von Optionen. Die Python -Optionen sind hier dokumentiert.
Sie können die Optionen auch mit dem Befehl help generate abrufen (unten zeigt nur Teilergebnisse):
NAME
openapi-json-schema-generator-cli generate - Generate code with the specified
generator.
SYNOPSIS
openapi-json-schema-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--api-name-suffix <api name suffix>] [--api-package <api package>]
[--artifact-id <artifact id>] [--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)] [--dry-run]
[(-e <templating engine> | --engine <templating engine>)]
[--enable-post-process-file]
[(-g <generator name> | --generator-name <generator name>)]
[--git-host <git host>] [--git-repo-id <git repo id>]
[--git-user-id <git user id>] [--global-property <global properties>...]
[--group-id <group id>] [--hide-generation-timestamp]
[--http-user-agent <http user agent>]
[(-i <spec file> | --input-spec <spec file>)]
[--ignore-file-override <ignore file override location>]
[--ints-allowed-for-float-double-formats]
[--invoker-package <invoker package>] [--minimal-update]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[(-o <output directory> | --output <output directory>)] [(-p <additional properties> | --additional-properties <additional properties>)...]
[--package-name <package name>] [--release-note <release note>]
[--remove-enum-value-prefix] [--remove-operation-id-prefix]
[(-s | --skip-overwrite)] [--skip-operation-example]
[--skip-validate-spec] [--strict-spec <true/false strict behavior>]
[(-t <template directory> | --template-dir <template directory>)]
[(-v | --verbose)]
OPTIONS
-a <authorization>, --auth <authorization>
adds authorization headers when fetching the OpenAPI definitions
remotely. Pass in a URL-encoded string of name:header with a comma
separating multiple values
--api-name-suffix <api name suffix>
Suffix that will be appended to all API names ('tags'). Default:
Api. e.g. Pet => PetApi. Note: Only ruby, python, jaxrs generators
support this feature at the moment.
--api-package <api package>
package for generated api classes
--artifact-id <artifact id>
artifactId in generated pom.xml. This also becomes part of the
generated library's filename
--artifact-version <artifact version>
artifact version in generated pom.xml. This also becomes part of the
generated library's filename
-c <configuration file>, --config <configuration file>
Path to configuration file. It can be JSON or YAML. If file is JSON,
the content should have the format {"optionKey":"optionValue",
"optionKey1":"optionValue1"...}. If file is YAML, the content should
have the format optionKey: optionValue. Supported options can be
different for each language. Run config-help -g {generator name}
command for language-specific config options.
--dry-run
Try things out and report on potential changes (without actually
making changes).
-e <templating engine>, --engine <templating engine>
templating engine: "handlebars"(default) or "mustache"
--enable-post-process-file
Enable post-processing file using environment variables.
-g <generator name>, --generator-name <generator name>
generator to use (see list command for list)
--git-host <git host>
Git host, e.g. gitlab.com.
--git-repo-id <git repo id>
Git repo ID, e.g. openapi-generator.
--git-user-id <git user id>
Git user ID, e.g. openapijsonschematools.
--global-property <global properties>
sets specified global properties (previously called 'system
properties') in the format of name=value,name=value (or multiple
options, each with name=value)
--group-id <group id>
groupId in generated pom.xml
--hide-generation-timestamp
Hides the generation timestamp when files are generated.
--http-user-agent <http user agent>
HTTP user agent, e.g. codegen_csharp_api_client, default to
'OpenAPI-Generator/{packageVersion}/{language}'
-i <spec file>, --input-spec <spec file>
location of the OpenAPI spec, as URL or file (required if not loaded
via config using -c)
--ignore-file-override <ignore file override location>
Specifies an override location for the .openapi-generator-ignore
file. Most useful on initial generation.
--ints-allowed-for-float-double-formats
Integers are allowed in for type: number format:float/double
payloads
--invoker-package <invoker package>
root package for generated code
--minimal-update
Only write output files that have changed.
--model-name-prefix <model name prefix>
Prefix that will be prepended to all model names.
--model-name-suffix <model name suffix>
Suffix that will be appended to all model names.
-o <output directory>, --output <output directory>
where to write the generated files (current dir by default)
-p <additional properties>, --additional-properties <additional
properties>
sets additional properties that can be referenced by the mustache
templates in the format of name=value,name=value. You can also have
multiple occurrences of this option.
--package-name <package name>
package for generated classes (where supported)
--release-note <release note>
Release note, default to 'Minor update'.
--remove-enum-value-prefix
Remove the common prefix of enum values
--remove-operation-id-prefix
Remove prefix of operationId, e.g. config_getId => getId
-s, --skip-overwrite
specifies if the existing files should be overwritten during the
generation.
--skip-operation-example
Skip examples defined in operations to avoid out of memory errors.
--skip-validate-spec
Skips the default behavior of validating an input specification.
--strict-spec <true/false strict behavior>
'MUST' and 'SHALL' wording in OpenAPI spec is strictly adhered to.
e.g. when false, no fixes will be applied to documents which pass
validation but don't follow the spec.
-t <template directory>, --template-dir <template directory>
folder containing the template files
-v, --verbose
verbose mode
Sie können dann den automatisch generierten Client verwenden. Die Readme.md ist ein guter Ausgangspunkt.
Andere Generatoren haben auch Proben.
Weitere Informationen zum Anpassen der Ausgabe (z. B. Paketname, Version) finden Sie in Customization.md, um die Ausgabe anzupassen (z. B. Paketname)).
In der Integration.md finden Sie unter der Integration von OpenAPI -Generator in Maven, Gradle, Github und CI/CD.
Das OpenAPI JSON -Schema -Generatorprojekt ist als Vorteil für Benutzer der Open -API -Spezifikation gedacht. Das Projekt selbst hat die Lizenz wie angegeben. Bitte verstehen Sie die folgenden Punkte: Bitte:
Wenn Code aus diesem Projekt generiert wird, wird er als der Benutzer der Software betrachtet und gehören. Es gibt keine Garantien-exprimiert oder impliziert-für generierte Code. Sie können das tun, was Sie damit wünschen, und nach dem Erstellen liegt der Code in Ihrer Verantwortung und unterliegt den Lizenzbegriffen, die Sie für angemessen halten.
GitHub -Code -Suche
Dieses Repo basiert auf V6.2.0 von OpenAPI -Generator. Dieses Projekt konzentriert sich darauf, die Ausgabe zu 100% mit dem JSON-Schema als Teil der OpenAPI 3.1-Spezifikation mit Schwerpunkt komplexer Fälle (Top-Down-Ansatz) zu gestalten. Ziel ist es, alles, was im JSON -Schema definiert wurde, vollständig zu unterstützen, damit Entwickler JSON -Schema sowie OpenAPI -Spezifikation in ihrem API -Design nutzen können. Das Aufbau hier ermöglicht schnellere Fortschritte bei der Unterstützung neuer Funktionen in OpenAPI 3.x, ohne dass viele ältere Generatoren unterstützt werden müssen, die die neuen Funktionen nicht verwenden.
OpenAPI JSON Schema Generator basiert auf OpenAPI -Generator V6.2.0. Das Projekt wurde hier erstellt, da das OpenAPI-Generator-Kernteam die Entfernung des Python-Generators aus seinem Projekt benötigte. Der Autor des Python Generators (@Spacether) zog es vor, im OpenAPI-Generator-Repo weiter zu bauen, aber das Kernteam weigerte sich, Python in OpenAPI-Generator zu halten. Im Folgenden finden Sie eine Zeitleiste dieser Ereignisse und einige ihrer Gründe:
Copyright 2023 OpenAPI-JSON-Schema-Generator-Mitwirkende Copyright 2018 OpenAPI-Generator-Mitwirkende (https://openapi-generator.tech) Copyright 2018 SmartBear Software
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz unter apache.org/licenses/license-2.0 erhalten
Sofern nicht nach geltendem Recht oder schriftlich zu vereinbart wird, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Basis ohne Gewährleistung oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.