Often when you work with REST endpoints the makers of these endpoints expose swagger (Open API Specification) files. Many developers however still handcode their clients. Not only is this bad, because you increase the chance that there will be bugs in the specification. It is inefficient as well. Here's a better way to generate your clients.
Method 1: Use the swagger editor
The most interactive way to create a client from a swagger file is using the online swagger editor. Go to https://editor.swagger.io/. Select
import URL and type in the URL of the swagger endpoint you want to load.
Alternatively you can select
Import File and upload the downloaded swagger.json file.
Generate client and choose the language of your choice. The end result is a zip file you can download with the generated client code.
Method 2: Use the swagger-codegen application
I can imagine that you don't want to use the editor all the time, because that increases the chance for human error.
The code generator used in the swagger editor is the [swagger-codegen](https://swagger.io/tools/swagger-codegen/) application.
This is a Java application that does exactly the same thing as the editor, but through a commandline utility.
To use the swagger-codegen you need to perform the following steps:
- Clone the repository to disk
git clone https://github.com/swagger-api/swagger-codegen.git
mvn clean package
- Copy the
swagger-codegen-cli.jarfile from the
targetfolder to a convient place on your computer. Preferrably place its location in the PATH variable.
Next execute the following command to generate a client:
java -jar swagger-codegen-cli.jar -i <json_file> -l python -o my_client
There are three arguments for this command:
-iSpecifies the path to the input file. This can be a URL
-lSpecifies the programming language for the client
-oSpecifies the output directory where the generate code should be located
There are many supported languages, I used python as an example, but you can generate clients for python, ruby, java, C#, scala and many more.
For me using the codegenerator saved me a lot of time. I hope it does the same for you!