README

OpenAPI Code Generation Example

This directory contains an example server using our code generator which implements the OpenAPI petstore-expanded example.

This is the structure:

  • api/: Contains the OpenAPI 3.0 specification
  • api/petstore/: The generated code for our pet store handlers
  • internal/: Pet store handler implementation and unit tests
  • cmd/: Runnable server implementing the OpenAPI 3 spec.

To generate the handler glue, run:

go run cmd/oapi-codegen/oapi-codegen.go --package petstore examples/oapi-codegen/api/petstore-expanded.yaml  > examples/oapi-codegen/api/petstore.gen.go
Expand ▾ Collapse ▴

Documentation

Overview

    Package petstore provides primitives to interact the openapi HTTP API.

    Code generated by github.com/egonz/oapi-codegen DO NOT EDIT.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    func NewAddPetRequest

    func NewAddPetRequest(server string, body AddPetJSONRequestBody) (*http.Request, error)

      NewAddPetRequest calls the generic AddPet builder with application/json body

      func NewAddPetRequestWithBody

      func NewAddPetRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error)

        NewAddPetRequestWithBody generates requests for AddPet with any type of body

        func NewDeletePetRequest

        func NewDeletePetRequest(server string, id int64) (*http.Request, error)

          NewDeletePetRequest generates requests for DeletePet

          func NewFindPetByIdRequest

          func NewFindPetByIdRequest(server string, id int64) (*http.Request, error)

            NewFindPetByIdRequest generates requests for FindPetById

            func NewFindPetsRequest

            func NewFindPetsRequest(server string, params *FindPetsParams) (*http.Request, error)

              NewFindPetsRequest generates requests for FindPets

              Types

              type AddPetJSONBody

              type AddPetJSONBody NewPet

                AddPetJSONBody defines parameters for AddPet.

                type AddPetJSONRequestBody

                type AddPetJSONRequestBody AddPetJSONBody

                  AddPetRequestBody defines body for AddPet for application/json ContentType.

                  type AddPetResponse

                  type AddPetResponse struct {
                  	Body         []byte
                  	HTTPResponse *http.Response
                  	JSON200      *Pet
                  	JSONDefault  *Error
                  }

                  func ParseAddPetResponse

                  func ParseAddPetResponse(rsp *http.Response) (*AddPetResponse, error)

                    ParseAddPetResponse parses an HTTP response from a AddPetWithResponse call

                    func (AddPetResponse) Status

                    func (r AddPetResponse) Status() string

                      Status returns HTTPResponse.Status

                      func (AddPetResponse) StatusCode

                      func (r AddPetResponse) StatusCode() int

                        StatusCode returns HTTPResponse.StatusCode

                        type Client

                        type Client struct {
                        	// The endpoint of the server conforming to this interface, with scheme,
                        	// https://api.deepmap.com for example.
                        	Server string
                        
                        	// Doer for performing requests, typically a *http.Client with any
                        	// customized settings, such as certificate chains.
                        	Client HttpRequestDoer
                        
                        	// A callback for modifying requests which are generated before sending over
                        	// the network.
                        	RequestEditor RequestEditorFn
                        }

                          Client which conforms to the OpenAPI3 specification for this service.

                          func NewClient

                          func NewClient(server string, opts ...ClientOption) (*Client, error)

                            Creates a new Client, with reasonable defaults

                            func (*Client) AddPet

                            func (c *Client) AddPet(ctx context.Context, body AddPetJSONRequestBody) (*http.Response, error)

                            func (*Client) AddPetWithBody

                            func (c *Client) AddPetWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error)

                            func (*Client) DeletePet

                            func (c *Client) DeletePet(ctx context.Context, id int64) (*http.Response, error)

                            func (*Client) FindPetById

                            func (c *Client) FindPetById(ctx context.Context, id int64) (*http.Response, error)

                            func (*Client) FindPets

                            func (c *Client) FindPets(ctx context.Context, params *FindPetsParams) (*http.Response, error)

                            type ClientInterface

                            type ClientInterface interface {
                            	// FindPets request
                            	FindPets(ctx context.Context, params *FindPetsParams) (*http.Response, error)
                            
                            	// AddPet request  with any body
                            	AddPetWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error)
                            
                            	AddPet(ctx context.Context, body AddPetJSONRequestBody) (*http.Response, error)
                            
                            	// DeletePet request
                            	DeletePet(ctx context.Context, id int64) (*http.Response, error)
                            
                            	// FindPetById request
                            	FindPetById(ctx context.Context, id int64) (*http.Response, error)
                            }

                              The interface specification for the client above.

                              type ClientOption

                              type ClientOption func(*Client) error

                                ClientOption allows setting custom parameters during construction

                                func WithBaseURL

                                func WithBaseURL(baseURL string) ClientOption

                                  WithBaseURL overrides the baseURL.

                                  func WithHTTPClient

                                  func WithHTTPClient(doer HttpRequestDoer) ClientOption

                                    WithHTTPClient allows overriding the default Doer, which is automatically created using http.Client. This is useful for tests.

                                    func WithRequestEditorFn

                                    func WithRequestEditorFn(fn RequestEditorFn) ClientOption

                                      WithRequestEditorFn allows setting up a callback function, which will be called right before sending the request. This can be used to mutate the request.

                                      type ClientWithResponses

                                      type ClientWithResponses struct {
                                      	ClientInterface
                                      }

                                        ClientWithResponses builds on ClientInterface to offer response payloads

                                        func NewClientWithResponses

                                        func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error)

                                          NewClientWithResponses creates a new ClientWithResponses, which wraps Client with return type handling

                                          func (*ClientWithResponses) AddPetWithBodyWithResponse

                                          func (c *ClientWithResponses) AddPetWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*AddPetResponse, error)

                                            AddPetWithBodyWithResponse request with arbitrary body returning *AddPetResponse

                                            func (*ClientWithResponses) AddPetWithResponse

                                            func (c *ClientWithResponses) AddPetWithResponse(ctx context.Context, body AddPetJSONRequestBody) (*AddPetResponse, error)

                                            func (*ClientWithResponses) DeletePetWithResponse

                                            func (c *ClientWithResponses) DeletePetWithResponse(ctx context.Context, id int64) (*DeletePetResponse, error)

                                              DeletePetWithResponse request returning *DeletePetResponse

                                              func (*ClientWithResponses) FindPetByIdWithResponse

                                              func (c *ClientWithResponses) FindPetByIdWithResponse(ctx context.Context, id int64) (*FindPetByIdResponse, error)

                                                FindPetByIdWithResponse request returning *FindPetByIdResponse

                                                func (*ClientWithResponses) FindPetsWithResponse

                                                func (c *ClientWithResponses) FindPetsWithResponse(ctx context.Context, params *FindPetsParams) (*FindPetsResponse, error)

                                                  FindPetsWithResponse request returning *FindPetsResponse

                                                  type ClientWithResponsesInterface

                                                  type ClientWithResponsesInterface interface {
                                                  	// FindPets request
                                                  	FindPetsWithResponse(ctx context.Context, params *FindPetsParams) (*FindPetsResponse, error)
                                                  
                                                  	// AddPet request  with any body
                                                  	AddPetWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*AddPetResponse, error)
                                                  
                                                  	AddPetWithResponse(ctx context.Context, body AddPetJSONRequestBody) (*AddPetResponse, error)
                                                  
                                                  	// DeletePet request
                                                  	DeletePetWithResponse(ctx context.Context, id int64) (*DeletePetResponse, error)
                                                  
                                                  	// FindPetById request
                                                  	FindPetByIdWithResponse(ctx context.Context, id int64) (*FindPetByIdResponse, error)
                                                  }

                                                    ClientWithResponsesInterface is the interface specification for the client with responses above.

                                                    type DeletePetResponse

                                                    type DeletePetResponse struct {
                                                    	Body         []byte
                                                    	HTTPResponse *http.Response
                                                    	JSONDefault  *Error
                                                    }

                                                    func ParseDeletePetResponse

                                                    func ParseDeletePetResponse(rsp *http.Response) (*DeletePetResponse, error)

                                                      ParseDeletePetResponse parses an HTTP response from a DeletePetWithResponse call

                                                      func (DeletePetResponse) Status

                                                      func (r DeletePetResponse) Status() string

                                                        Status returns HTTPResponse.Status

                                                        func (DeletePetResponse) StatusCode

                                                        func (r DeletePetResponse) StatusCode() int

                                                          StatusCode returns HTTPResponse.StatusCode

                                                          type Error

                                                          type Error struct {
                                                          
                                                          	// Error code
                                                          	Code int32 `json:"code"`
                                                          
                                                          	// Error message
                                                          	Message string `json:"message"`
                                                          }

                                                            Error defines model for Error.

                                                            type FindPetByIdResponse

                                                            type FindPetByIdResponse struct {
                                                            	Body         []byte
                                                            	HTTPResponse *http.Response
                                                            	JSON200      *Pet
                                                            	JSONDefault  *Error
                                                            }

                                                            func ParseFindPetByIdResponse

                                                            func ParseFindPetByIdResponse(rsp *http.Response) (*FindPetByIdResponse, error)

                                                              ParseFindPetByIdResponse parses an HTTP response from a FindPetByIdWithResponse call

                                                              func (FindPetByIdResponse) Status

                                                              func (r FindPetByIdResponse) Status() string

                                                                Status returns HTTPResponse.Status

                                                                func (FindPetByIdResponse) StatusCode

                                                                func (r FindPetByIdResponse) StatusCode() int

                                                                  StatusCode returns HTTPResponse.StatusCode

                                                                  type FindPetsParams

                                                                  type FindPetsParams struct {
                                                                  
                                                                  	// tags to filter by
                                                                  	Tags *[]string `json:"tags,omitempty"`
                                                                  
                                                                  	// maximum number of results to return
                                                                  	Limit *int32 `json:"limit,omitempty"`
                                                                  }

                                                                    FindPetsParams defines parameters for FindPets.

                                                                    type FindPetsResponse

                                                                    type FindPetsResponse struct {
                                                                    	Body         []byte
                                                                    	HTTPResponse *http.Response
                                                                    	JSON200      *[]Pet
                                                                    	JSONDefault  *Error
                                                                    }

                                                                    func ParseFindPetsResponse

                                                                    func ParseFindPetsResponse(rsp *http.Response) (*FindPetsResponse, error)

                                                                      ParseFindPetsResponse parses an HTTP response from a FindPetsWithResponse call

                                                                      func (FindPetsResponse) Status

                                                                      func (r FindPetsResponse) Status() string

                                                                        Status returns HTTPResponse.Status

                                                                        func (FindPetsResponse) StatusCode

                                                                        func (r FindPetsResponse) StatusCode() int

                                                                          StatusCode returns HTTPResponse.StatusCode

                                                                          type HttpRequestDoer

                                                                          type HttpRequestDoer interface {
                                                                          	Do(req *http.Request) (*http.Response, error)
                                                                          }

                                                                            Doer performs HTTP requests.

                                                                            The standard http.Client implements this interface.

                                                                            type NewPet

                                                                            type NewPet struct {
                                                                            
                                                                            	// Name of the pet
                                                                            	Name string `json:"name"`
                                                                            
                                                                            	// Type of the pet
                                                                            	Tag *string `json:"tag,omitempty"`
                                                                            }

                                                                              NewPet defines model for NewPet.

                                                                              type Pet

                                                                              type Pet struct {
                                                                              	// Embedded struct due to allOf(#/components/schemas/NewPet)
                                                                              	NewPet
                                                                              
                                                                              	// Unique id of the pet
                                                                              	Id int64 `json:"id"`
                                                                              }

                                                                                Pet defines model for Pet.

                                                                                type RequestEditorFn

                                                                                type RequestEditorFn func(ctx context.Context, req *http.Request) error

                                                                                  RequestEditorFn is the function signature for the RequestEditor callback function

                                                                                  Directories

                                                                                  Path Synopsis
                                                                                  chi
                                                                                  api
                                                                                  Package api provides primitives to interact the openapi HTTP API.
                                                                                  Package api provides primitives to interact the openapi HTTP API.
                                                                                  This is an example of implementing the Pet Store from the OpenAPI documentation found at: https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml The code under api/petstore/ has been generated from that specification.
                                                                                  This is an example of implementing the Pet Store from the OpenAPI documentation found at: https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml The code under api/petstore/ has been generated from that specification.
                                                                                  api
                                                                                  Package api provides primitives to interact the openapi HTTP API.
                                                                                  Package api provides primitives to interact the openapi HTTP API.