swagger-codegen README

The project's README from github.com/swagger-api/swagger-codegen. As one markdown file: README.md.

Swagger Codegen

Swagger Codegen Logo

This is the Swagger Codegen project, which allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec.

💚 If you would like to contribute, please refer to guidelines and a list of open tasks.💚

📔 For more information, please refer to the Wiki page and FAQ 📔

⚠️ If the OpenAPI Description or Swagger file is obtained from an untrusted source, please make sure you've reviewed the artefact before using Swagger Codegen to generate the API client, server stub or documentation as code injection may occur. ⚠️

Versioning

⚠️ this document refers to version 2.X, check here for 3.X.

Both 2.X and 3.X version lines of Swagger Codegen are available and are independently maintained.

NOTES:

For full versioning information, please refer to the versioning documentation.

Supported Languages and Frameworks

Currently, the following languages/frameworks are supported:

Check out OpenAPI-Spec for additional information about the OpenAPI project.

Table of contents

Compatibility

The OpenAPI Specification has undergone 3 revisions since initial creation in 2010. The current stable versions of Swagger Codegen project have the following compatibilities with the OpenAPI Specification:

Swagger Codegen Version Release Date Swagger / OpenAPI Spec compatibility Notes
3.0.71 (current stable) 2025-07-03 1.0, 1.1, 1.2, 2.0, 3.0 tag v3.0.71
2.4.46 (current stable) 2025-06-30 1.0, 1.1, 1.2, 2.0 tag v2.4.46

💁 Here's also an overview of what's coming around the corner:

Swagger Codegen Version Release Date Swagger / OpenAPI Spec compatibility Notes
3.0.72-SNAPSHOT (current 3.0.0, upcoming minor release) SNAPSHOT TBD 1.0, 1.1, 1.2, 2.0, 3.0 Minor release
2.4.47-SNAPSHOT (current master, upcoming minor release) SNAPSHOT TBD 1.0, 1.1, 1.2, 2.0 Minor release

For detailed breakdown of all versions, please see the full compatibility listing.

Getting Started

To get up and running with Swagger Codegen, check out the following guides and instructions:

Once you've your environment setup, you're ready to start generating clients and/or servers.

As a quick example, to generate a PHP client for https://petstore.swagger.io/v2/swagger.json, you can run the following:

git clone https://github.com/swagger-api/swagger-codegen
cd swagger-codegen
mvn clean package
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
   -i https://petstore.swagger.io/v2/swagger.json \
   -l php \
   -o /var/tmp/php_api_client

Note: if you're on Windows, replace the last command with

java -jar modules\swagger-codegen-cli\target\swagger-codegen-cli.jar generate -i https://petstore.swagger.io/v2/swagger.json -l php -o c:\temp\php_api_client

You can also download the JAR (latest release) directly from maven.org

To get a list of general options available, you can run the following:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar help generate

To get a list of PHP specified options (which can be passed to the generator with a config file via the -c option), please run

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l php

Generators

To generate a sample client library

You can build a client against the swagger sample petstore API as follows:

./bin/java-petstore.sh

(On Windows, run .\bin\windows\java-petstore.bat instead)

This will run the generator with this command:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
  -i https://petstore.swagger.io/v2/swagger.json \
  -l java \
  -o samples/client/petstore/java

with a number of options. You can get the options with the help generate command (below only shows partial results):

NAME
        swagger-codegen-cli generate - Generate code with chosen lang

SYNOPSIS
        swagger-codegen-cli generate
                [(-a <authorization> | --auth <authorization>)]
                [--additional-properties <additional properties>...]
                [--api-package <api package>] [--artifact-id <artifact id>]
                [--artifact-version <artifact version>]
                [(-c <configuration file> | --config <configuration file>)]
                [-D <system properties>...] [--git-repo-id <git repo id>]
                [--git-user-id <git user id>] [--group-id <group id>]
                [--http-user-agent <http user agent>]
                (-i <spec file> | --input-spec <spec file>)
                [--ignore-file-override <ignore file override location>]
                [--import-mappings <import mappings>...]
                [--instantiation-types <instantiation types>...]
                [--invoker-package <invoker package>]
                (-l <language> | --lang <language>)
                [--language-specific-primitives <language specific primitives>...]
                [--library <library>] [--model-name-prefix <model name prefix>]
                [--model-name-suffix <model name suffix>]
                [--model-package <model package>]
                [(-o <output directory> | --output <output directory>)]
                [--release-note <release note>] [--remove-operation-id-prefix]
                [--reserved-words-mappings <reserved word mappings>...]
                [(-s | --skip-overwrite)]
                [(-t <template directory> | --template-dir <template directory>)]
                [--type-mappings <type mappings>...] [(-v | --verbose)]

OPTIONS
        -a <authorization>, --auth <authorization>
            adds authorization headers when fetching the swagger definitions
            remotely. Pass in a URL-encoded string of name:header with a comma
            separating multiple values

...... (results omitted)

        -v, --verbose
            verbose mode

You can then compile and run the client, as well as unit tests against it:

cd samples/client/petstore/java
mvn package

Other languages have petstore samples, too:

./bin/android-petstore.sh
./bin/java-petstore.sh
./bin/objc-petstore.sh

Generating libraries from your server

It's just as easy--just use the -i flag to point to either a server or file.

🔧 Swagger Codegen comes with a tonne of flexibility to support your code generation preferences. Checkout the generators documentation which takes you through some of the possibilities as well as showcasing how to generate from local files and ignore file formats.

Selective generation

You may not want to generate all models in your project. Likewise you may want just one or two apis to be written. If that's the case check the selective generation instructions.

Advanced Generator Customization

There are different aspects of customizing the code generator beyond just creating or modifying templates. Each language has a supporting configuration file to handle different type mappings, or bring your own models. For more information check out the advanced configuration docs.

Validating your OpenAPI Spec

You have options. The easiest is to use our online validator which not only will let you validate your spec, but with the debug flag, you can see what's wrong with your spec. For example check out Swagger Validator.

If you want to have validation directly on your own machine, then Spectral is an excellent option.

Generating dynamic html api documentation

To do so, just use the -l dynamic-html flag when reading a spec file. This creates HTML documentation that is available as a single-page application with AJAX. To view the documentation:

cd samples/dynamic-html/
npm install
node .

Which launches a node.js server so the AJAX calls have a place to go.

Generating static html api documentation

To do so, just use the -l html flag when reading a spec file. This creates a single, simple HTML file with embedded css so you can ship it as an email attachment, or load it from your filesystem:

cd samples/html/
open index.html

Workflow Integration

It's possible to leverage Swagger Codegen directly within your preferred CI/CD workflows to streamline your auto-generation requirements. Check out the workflows integration guide to see information on our Maven, Gradle, and GitHub integration options. 🚀

Online Generators

If you don't want to run and host your own code generation instance, check our our online generators information.

Contributing

Please refer to this page

Swagger Codegen Core Team

Swagger Codegen core team members are contributors who have been making significant contributions (review issues, fix bugs, make enhancements, etc) to the project on a regular basis.

Members of the core team shoulder the following responsibilities:

Security contact

Please disclose any security-related issues or vulnerabilities by emailing [email protected], instead of using the public issue tracker.

License information on Generated Code

The Swagger Codegen project is intended as a benefit for users of the Swagger / Open API Specification. The project itself has the License as specified. In addition, please understand the following points:

When code is generated from this project, it shall be considered AS IS and owned by the user of the software. There are no warranties--expressed or implied--for generated code. You can do what you wish with it, and once generated, the code is your responsibility and subject to the licensing terms that you deem appropriate.

Thank You

💚💚💚 We'd like to give a big shout out to all those who've contributed to Swagger Codegen, be that in raising issues, fixing bugs, authoring templates, or crafting useful content for others to benefit from. 💚💚💚

swagger-codegen (swagger-api/swagger-codegen)

Searching Database…

这是什么?Swagger Codegen 是一个基于模板的引擎:输入 OpenAPI 或 Swagger 定义文件,它会自动据此生成 API 客户端库(SDK)、服务端桩代码以及 API 文档。
它是一个我要加到项目里的库,还是一个独立的工具?是一个独立的命令行生成工具:你指定一个规范文件,它就会按你选择的语言生成可直接使用的源码。你不需要把 Swagger Codegen 本身引入你的应用。
我怎么开始使用它?从 maven.org 下载最新的 JAR(或使用 Docker 镜像),然后用 generate 标志运行:-i 指定你的规范文件,-l 指定目标语言,-o 指定输出目录。在 Windows 上请改用自带的 .bat 脚本。
我需要安装 Java 吗?需要——这是一个用 java -jar 运行的 Java 工具,从源码构建还需要 Maven。另外也可以使用官方 Docker 镜像,或者用在线托管版生成器,完全省去本地安装。
它支持 OpenAPI 3.0 规范,还是只支持旧的 Swagger 2.0?两代规范都支持,但分属不同的发布线:只有 3.X 支持 OpenAPI 3.0,而 2.X 处理 Swagger 1.x-2.0。这两条发布线独立维护,使用的 Maven group id 也不同。
生成的代码也受该项目 Apache 2.0 许可证约束吗?不受——生成的代码被有意排除在母项目的许可证之外。它按原样(AS IS)提供,归你所有,所以你的客户端和桩代码想用什么许可证都可以。
用网上找来的规范文件生成代码安全吗?要小心:README 提醒,如果 OpenAPI 或 Swagger 文件来自不可信的来源,生成过程中可能发生代码注入——在对其运行生成器之前,请先审查该文件。
我可以只生成 API 的一部分,而不是全部吗?可以。选择性生成让你只产出特定的模型或 API 操作,而且每种语言都有配置文件,可做更细粒度的控制,比如自定义类型映射。
想试用的话,我必须安装什么吗?不一定——如果你不想自己跑一个实例,项目提供了在线托管版生成器,还有一个在线校验器,可以直接在浏览器里检查你的规范文件。
它能集成到我的 CI/CD 流水线里吗?可以——文档里写了与 Maven、Gradle 和 GitHub 的集成方案,客户端或桩代码的重新生成可以作为构建的一部分自动运行。
Size
103.7 MB
Stars
17.8K
Age
15y
Commits · 90 Days