Oapi-codegen: Difference between revisions
(→types) |
|||
Line 56: | Line 56: | ||
Also see: {{Internal|OpenAPI_Specification_Schemas#Overview|OpenAPI Specification Schemas}} | Also see: {{Internal|OpenAPI_Specification_Schemas#Overview|OpenAPI Specification Schemas}} | ||
==Code Generation | ==<span id='Code_Generation_for_OpenAPI_Specification_Path/Operation_Combinations'></span>Server Code Generation== | ||
{{Internal|OpenAPI_Specification_Path#Server_Code_Generation_for_Path/Operation_Combinations|OpenAPI Specification Path | Server Code Generation for Path/Operation Combinations}} | {{Internal|OpenAPI_Specification_Path#Server_Code_Generation_for_Path/Operation_Combinations|OpenAPI Specification Path | Server Code Generation for Path/Operation Combinations}} | ||
Implement the handlers and register them with <code>[[Labstack/echo|echo]]</code>: {{Internal|Labstack/echo#Registering_Handlers_Generated_by_oapi-codegen_from_an_OpenAPI_Specification|echo | Registering Handlers Generated by <tt>oapi-codegen</tt> from an OpenAPI Specification}} | Implement the handlers and register them with <code>[[Labstack/echo|echo]]</code>: {{Internal|Labstack/echo#Registering_Handlers_Generated_by_oapi-codegen_from_an_OpenAPI_Specification|echo | Registering Handlers Generated by <tt>oapi-codegen</tt> from an OpenAPI Specification}} | ||
==Client Code Generation== | ==Client Code Generation== | ||
<font color=darkkhaki>TODO: https://github.com/deepmap/oapi-codegen#generated-client-boilerplate</font> | <font color=darkkhaki>TODO: https://github.com/deepmap/oapi-codegen#generated-client-boilerplate</font> |
Revision as of 02:10, 27 January 2024
External
Internal
Overview
Installation
Get the latest version from https://github.com/deepmap/oapi-codegen/tags
Then:
go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@v2.1.0
The installation will place the package under $GOPATH/pkg/mod/cache/download/github.com/deepmap
and $GOPATH/pkg/mod/github.com/deepmap
, will compile the binary and place it under ~/go/bin
.
Generate Code
Generate client and server code:
oapi-codegen -package petstore ./petstore-expanded.yaml > ./internal/petstore/petstore.gen.go
go mod tidy
Makefile Support
.PHONY: generate_oapi_artifacts
generate_oapi_artifacts: internal/petstore/spec.gen.go internal/petstore/types.gen.go internal/petstore/server.gen.go internal/petstore/client.gen.go
internal/petstore/spec.gen.go: ./petstore.yaml
oapi-codegen -generate spec -package petstore $< > $@
internal/petstore/types.gen.go: ./petstore.yaml
oapi-codegen -generate types -package petstore $< > $@
internal/petstore/server.gen.go: ./petstore.yaml
oapi-codegen -generate server -package petstore $< > $@
internal/petstore/client.gen.go: ./petstore.yaml
oapi-codegen -generate client -package petstore $< > $@
Type Generation
Generate the types declared in the /components/schemas
section of the OpenAPI specification.
oapi-codegen -generate types -package petstore ./petstore-expanded.yaml > ./internal/petstore/types.gen.go
Also see:
Server Code Generation
Implement the handlers and register them with echo
:
Client Code Generation
TODO: https://github.com/deepmap/oapi-codegen#generated-client-boilerplate
Options
-package
The package name for the generated code.
-generate
Comma-separated list of code to generate; valid options: "types", "client", "chi-server", "server", "gin", "gorilla", "spec", "skip-fmt", "skip-prune", "fiber", "iris". The default is "types,client,server,spec".
types
See Type Generation above.
spec
Generates this:
var swaggerSpec = []string{...}
func decodeSpec() ([]byte, error) {...}
var rawSpec = decodeSpecCached()
func decodeSpecCached() func() ([]byte, error) {...}
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {...}
func GetSwagger() (swagger *openapi3.T, err error) {...}
server
Default, generates server code for the echo HTTP server.
oapi-codegen -generate server -package petstore ./petstore.yaml > ./internal/petstore/server.gen.go
For an example of how to set up an echo
server with the generated code, see:
chi-server
Generates server code for the chi HTTP server. The code is compatible with net/http
server:
oapi-codegen -generate chi-server -package petstore ./petstore.yaml > ./internal/petstore/server.gen.go
For an example of how to set up a net/http
server with the generated code, see: