Generate server code from OpenAPI specification file
Generate server code from OpenAPI specification file
Use OpenAPI Generator - language agnostic
- https://openapi-generator.tech/
- https://openapi-generator.tech/
- All the code generators can be found in https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages
- Look for
getName()
in the corresponding java class and use it in the terminal command.
- Look for
See https://github.com/explorer436/programming-playground/tree/main/OpenAPI
Generate Rust server code from OpenAPI specification file
docker run --rm --volume "${PWD}:/local" openapitools/openapi-generator-cli generate -i /local/<path_to_your_openapi_spec> -g rust-server -o /local/<output_directory>
Do not use --volume
Use the newer --mount
way.
-v or --volume flag (older, simpler syntax):
docker run -v /path/on/host:/path/in/container <image_name>
or
docker run --volume /path/on/host:/path/in/container <image_name>
--mount flag (newer, more verbose, and recommended syntax):
docker run --mount type=bind,source=/path/on/host,target=/path/in/container <image_name>
This one worked
[explorer436@explorer436-lenovo-legion-82b1 generate-code-from-spec]$ docker run --rm --mount type=bind,source=/home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-rust-server-code-from-spec,target=/home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-rust-server-code-from-spec openapitools/openapi-generator-cli generate -i /home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-rust-server-code-from-spec/openapi-albums.yaml -g rust-server -o /home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-rust-server-code-from-spec
Generate golang server code from OpenAPI specification file
docker run --rm --volume "${PWD}:/local" openapitools/openapi-generator-cli generate -i /local/<path_to_your_openapi_spec> -g rust-server -o /local/<output_directory>
src [explorer436@explorer436-lenovo-legion-82b1 generate-golang-server-code-from-spec]$ docker run –rm –mount type=bind,source=/home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-golang-server-code-from-spec,target=/home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-golang-server-code-from-spec openapitools/openapi-generator-cli generate -i /home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-golang-server-code-from-spec/openapi-albums.yaml -g go-server -o /home/explorer436/Downloads/GitRepositories/programming-playground/OpenAPI/generate-golang-server-code-from-spec #+end_src
For go lang
Option 1: Use GoLand IDE
- Start with a json object. Put it together either in a text editor or specific json editors.
- GoLand IDE has this feature where you paste a json into a go file and it asks you if it should convert that json into a struct.
- Select “yes” and it will generate a struct right there.
Option 2: Use oapi-codegen
Library used:
https://github.com/oapi-codegen/oapi-codegen
Installation:
$ go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest
(verify)
$ oapi-codegen -version
Generate code:
oapi-codegen --package=main --generate types,client openapi.yaml > openapi.gen.go
oapi-codegen --package=main --generate types,server openapi-albums.json > generatedserver-albums.go
oapi-codegen --package=main --generate types,server openapi-petstore.yaml > generatedserver-petstore.go
See https://github.com/explorer436/programming-playground/tree/main/go-playground
For Java
See https://github.com/explorer436/programming-playground/tree/main/java-playground/openapi-and-swagger