-
Notifications
You must be signed in to change notification settings - Fork 6k
How to add a generator for a new language or framework
To add an API client generator for a new language (e.g. Go), we would recommend going through the following PR as a starting point:
-
[Go] Add Go API client generator #1747.
Here is a summary of the changes:
- Add
modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java
which extendsDefaultCodegen
. It configures the language codegen, setstemplateDir = "go"
which is used to locate the codegen's mustache templates, adds the template filesapi.mustache
andmodels.mustache
(see below), and adds the language CLI option. Change as necessary for your language. - Add the class to
modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig
- Add a
modules/swagger-codegen/src/main/resources/go/README.mustache
- Add the
modules/swagger-codegen/src/main/resources/go/api.mustache
and modules/swagger-codegen/src/main/resources/go/model.mustache - Add samples in
samples/client/petstore/go
and.sh
and.bat
scripts to generate the samples
- Add
To add a server stub generator for a new framework (e.g. Haskell Servant), please go through the following PRs:
- Code generator for haskell-servant framework #2009
- [aspnet] Initial implementation of ASP.NET 5 server #2024
If you need any assistance, please open a ticket
- Tests Cases
- Shell script under
./bin/
to generate Petstore sample - Windows batch file under
.\bin\windows\
to generate Petstore sample - Unit testing for Petstore sample (e.g. unit tests for PHP Petstore SDk)
- A simple test script/app to test Petstore (e.g. test.php) to serve as a starting point for developers to easily play with the auto-generated SDK
- Documentation
- Auto-generated
README.md
to explain the usage of the SDK - DocString for methods and models
For new generator naming, we prefer kebab-case, e.g. swift3
instead of Swift3
, erlang-server
instead of ErlangServer
.
This is not to say all the above is a must in order for the new generator to be added. If you need help implementing the above, please open a ticket and we'll help on that
would suggest when compiling to use flag to ignore tests. The tests requires extra dependencies and the compilation might fail due to that.