Generate server code from OpenAPI specification file

Generate server code from OpenAPI specification file

Use OpenAPI Generator - language agnostic

  1. https://openapi-generator.tech/
  2. https://openapi-generator.tech/
  3. 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
    1. Look for getName() in the corresponding java class and use it in the terminal command.

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

  1. Start with a json object. Put it together either in a text editor or specific json editors.
  2. 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.
  3. 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


Links to this note