Documentation ¶
Overview ¶
Package goapi is a lightweight opinionated router to bridge function call and http api.
Index ¶
- func Interface(i any, ts ...any) *vary.Interface
- type DataBinary
- type Descriptioner
- type Group
- func (g *Group) Add(method openapi.Method, path string, handler OperationHandler)
- func (g *Group) DELETE(path string, handler OperationHandler)
- func (g *Group) GET(path string, handler OperationHandler)
- func (g *Group) Group(prefix string) *Group
- func (g *Group) HEAD(path string, handler OperationHandler)
- func (g *Group) Handler(h http.Handler) http.Handler
- func (g *Group) OPTIONS(path string, handler OperationHandler)
- func (g *Group) OpenAPI() *openapi.Document
- func (g *Group) PATCH(path string, handler OperationHandler)
- func (g *Group) POST(path string, handler OperationHandler)
- func (g *Group) PUT(path string, handler OperationHandler)
- func (g *Group) Prefix() string
- func (g *Group) Router() *Router
- func (g *Group) Server() http.Handler
- func (g *Group) Shutdown(ctx context.Context) error
- func (g *Group) Start(addr string) error
- func (g *Group) Use(m middlewares.Middleware)
- type InBody
- type InHeader
- type InURL
- type Operation
- type OperationHandler
- type OperationOpenAPI
- type Params
- type Path
- type Response
- type Router
- func (r *Router) AddFormatChecker(name string, c gojsonschema.FormatChecker)
- func (r *Router) Group(prefix string) *Group
- func (r *Router) Handler(next http.Handler) http.Handler
- func (r *Router) OpenAPI() *openapi.Document
- func (r *Router) ServerHandler() http.Handler
- func (r *Router) Shutdown(ctx context.Context) error
- func (r *Router) Start(addr string) error
- func (r *Router) Use(middlewares ...middlewares.Middleware)
- type StatusAccepted
- type StatusAlreadyReported
- type StatusBadGateway
- type StatusBadRequest
- type StatusConflict
- type StatusContinue
- type StatusCreated
- type StatusEarlyHints
- type StatusExpectationFailed
- type StatusFailedDependency
- type StatusForbidden
- type StatusFound
- type StatusGatewayTimeout
- type StatusGone
- type StatusHTTPVersionNotSupported
- type StatusIMUsed
- type StatusInsufficientStorage
- type StatusInternalServerError
- type StatusLengthRequired
- type StatusLocked
- type StatusLoopDetected
- type StatusMethodNotAllowed
- type StatusMisdirectedRequest
- type StatusMovedPermanently
- type StatusMultiStatus
- type StatusMultipleChoices
- type StatusNetworkAuthenticationRequired
- type StatusNoContent
- type StatusNonAuthoritativeInfo
- type StatusNotAcceptable
- type StatusNotExtended
- type StatusNotFound
- type StatusNotImplemented
- type StatusNotModified
- type StatusOK
- type StatusPartialContent
- type StatusPaymentRequired
- type StatusPermanentRedirect
- type StatusPreconditionFailed
- type StatusPreconditionRequired
- type StatusProcessing
- type StatusProxyAuthRequired
- type StatusRequestEntityTooLarge
- type StatusRequestHeaderFieldsTooLarge
- type StatusRequestTimeout
- type StatusRequestURITooLong
- type StatusRequestedRangeNotSatisfiable
- type StatusResetContent
- type StatusSeeOther
- type StatusServiceUnavailable
- type StatusSwitchingProtocols
- type StatusTeapot
- type StatusTemporaryRedirect
- type StatusTooEarly
- type StatusTooManyRequests
- type StatusUnauthorized
- type StatusUnavailableForLegalReasons
- type StatusUnprocessableEntity
- type StatusUnsupportedMediaType
- type StatusUpgradeRequired
- type StatusUseProxy
- type StatusVariantAlsoNegotiates
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DataBinary ¶ added in v0.6.0
type DataBinary []byte
DataBinary is a flag for binary response body. When Data field in the response struct is of this type, the response body will be written directly to the http.ResponseWriter.
type Descriptioner ¶ added in v0.3.0
type Descriptioner interface {
Description() string
}
Descriptioner is an interface that is use to specify the description in openapi.
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group of handlers with the same url path prefix.
func (*Group) Add ¶
func (g *Group) Add(method openapi.Method, path string, handler OperationHandler)
Add adds a new http handler to the group. If a request matches the path and method, the handler will be called.
func (*Group) DELETE ¶
func (g *Group) DELETE(path string, handler OperationHandler)
DELETE is a shortcut for Group.Add.
func (*Group) GET ¶
func (g *Group) GET(path string, handler OperationHandler)
GET is a shortcut for Group.Add.
func (*Group) HEAD ¶
func (g *Group) HEAD(path string, handler OperationHandler)
HEAD is a shortcut for Group.Add.
func (*Group) Handler ¶ added in v0.2.0
Handler is a shortcut for Router.Handler.
func (*Group) OPTIONS ¶
func (g *Group) OPTIONS(path string, handler OperationHandler)
OPTIONS is a shortcut for Group.Add.
func (*Group) OpenAPI ¶
OpenAPI is a shortcut for Router.OpenAPI.
func (*Group) PATCH ¶
func (g *Group) PATCH(path string, handler OperationHandler)
PATCH is a shortcut for Group.Add.
func (*Group) POST ¶
func (g *Group) POST(path string, handler OperationHandler)
POST is a shortcut for Group.Add.
func (*Group) PUT ¶
func (g *Group) PUT(path string, handler OperationHandler)
PUT is a shortcut for Group.Add.
func (*Group) Server ¶
Server is a shortcut for Router.Handler.
func (*Group) Shutdown ¶ added in v0.2.0
Shutdown is a shortcut for Router.Shutdown.
func (*Group) Start ¶ added in v0.2.0
Start is a shortcut for Router.Start.
func (*Group) Use ¶
func (g *Group) Use(m middlewares.Middleware)
Use is similar to Router.Use but with he group prefix.
type InBody ¶
type InBody struct{}
InBody is a flag that can be embedded into a struct to mark it as a container for request body.
type InHeader ¶
type InHeader struct{}
InHeader is a flag that can be embedded into a struct to mark it as a container for request header parameters.
type InURL ¶
type InURL struct{}
InURL is a flag that can be embedded into a struct to mark it as a container for request url parameters.
type Operation ¶
type Operation struct {
// contains filtered or unexported fields
}
Operation is a handler for a specific HTTP method and path. We use reflection to constrain the handler function signature, to make it follow the openapi spec.
type OperationHandler ¶ added in v0.6.0
type OperationHandler any
OperationHandler is a function to handle input and output of a http operation.
type OperationOpenAPI ¶ added in v0.6.0
OperationOpenAPI allows a handler customize the OpenAPI doc of its corresponding operation.
type Params ¶
type Params interface {
// contains filtered or unexported methods
}
Params represents the parameter of a request.
type Path ¶
type Path struct {
// contains filtered or unexported fields
}
Path helps to handle openapi path pattern.
type Response ¶
type Response interface {
// contains filtered or unexported methods
}
Response is an interface that represents a response object.
type Router ¶
Router for routing http requests to handlers. It implements the middlewares.Middleware interface.
func (*Router) AddFormatChecker ¶ added in v0.6.0
func (r *Router) AddFormatChecker(name string, c gojsonschema.FormatChecker)
AddFormatChecker for json schema validation. Such as a struct:
type User struct { ID string `format:"my-id"` }
You can add a format checker for "id" like:
AddFormatChecker("my-id", checker)
func (*Router) Handler ¶
Handler implements the middlewares.Middleware interface. It makes the router itself a middleware.
func (*Router) OpenAPI ¶
OpenAPI returns the OpenAPI doc of the router. You can use json.Marshal to convert it to a JSON string.
func (*Router) ServerHandler ¶ added in v0.2.0
ServerHandler with a 404 middleware at the end.
func (*Router) Start ¶ added in v0.2.0
Start listen on addr with the Router.ServerHandler.
func (*Router) Use ¶
func (r *Router) Use(middlewares ...middlewares.Middleware)
Use a middleware to the router.
type StatusAlreadyReported ¶
type StatusAlreadyReported struct{}
StatusAlreadyReported represents http status code 208.
type StatusBadGateway ¶
type StatusBadGateway struct{}
StatusBadGateway represents http status code 502.
type StatusBadRequest ¶
type StatusBadRequest struct{}
StatusBadRequest represents http status code 400.
type StatusEarlyHints ¶
type StatusEarlyHints struct{}
StatusEarlyHints represents http status code 103.
type StatusExpectationFailed ¶
type StatusExpectationFailed struct{}
StatusExpectationFailed represents http status code 417.
type StatusFailedDependency ¶
type StatusFailedDependency struct{}
StatusFailedDependency represents http status code 424.
type StatusForbidden ¶
type StatusForbidden struct{}
StatusForbidden represents http status code 403.
type StatusGatewayTimeout ¶
type StatusGatewayTimeout struct{}
StatusGatewayTimeout represents http status code 504.
type StatusHTTPVersionNotSupported ¶
type StatusHTTPVersionNotSupported struct{}
StatusHTTPVersionNotSupported represents http status code 505.
type StatusInsufficientStorage ¶
type StatusInsufficientStorage struct{}
StatusInsufficientStorage represents http status code 507.
type StatusInternalServerError ¶
type StatusInternalServerError struct{}
StatusInternalServerError represents http status code 500.
type StatusLengthRequired ¶
type StatusLengthRequired struct{}
StatusLengthRequired represents http status code 411.
type StatusLoopDetected ¶
type StatusLoopDetected struct{}
StatusLoopDetected represents http status code 508.
type StatusMethodNotAllowed ¶
type StatusMethodNotAllowed struct{}
StatusMethodNotAllowed represents http status code 405.
type StatusMisdirectedRequest ¶
type StatusMisdirectedRequest struct{}
StatusMisdirectedRequest represents http status code 421.
type StatusMovedPermanently ¶
type StatusMovedPermanently struct{}
StatusMovedPermanently represents http status code 301.
type StatusMultiStatus ¶
type StatusMultiStatus struct{}
StatusMultiStatus represents http status code 207.
type StatusMultipleChoices ¶
type StatusMultipleChoices struct{}
StatusMultipleChoices represents http status code 300.
type StatusNetworkAuthenticationRequired ¶
type StatusNetworkAuthenticationRequired struct{}
StatusNetworkAuthenticationRequired represents http status code 511.
type StatusNoContent ¶
type StatusNoContent struct{}
StatusNoContent represents http status code 204.
type StatusNonAuthoritativeInfo ¶
type StatusNonAuthoritativeInfo struct{}
StatusNonAuthoritativeInfo represents http status code 203.
type StatusNotAcceptable ¶
type StatusNotAcceptable struct{}
StatusNotAcceptable represents http status code 406.
type StatusNotExtended ¶
type StatusNotExtended struct{}
StatusNotExtended represents http status code 510.
type StatusNotImplemented ¶
type StatusNotImplemented struct{}
StatusNotImplemented represents http status code 501.
type StatusNotModified ¶
type StatusNotModified struct{}
StatusNotModified represents http status code 304.
type StatusPartialContent ¶
type StatusPartialContent struct{}
StatusPartialContent represents http status code 206.
type StatusPaymentRequired ¶
type StatusPaymentRequired struct{}
StatusPaymentRequired represents http status code 402.
type StatusPermanentRedirect ¶
type StatusPermanentRedirect struct{}
StatusPermanentRedirect represents http status code 308.
type StatusPreconditionFailed ¶
type StatusPreconditionFailed struct{}
StatusPreconditionFailed represents http status code 412.
type StatusPreconditionRequired ¶
type StatusPreconditionRequired struct{}
StatusPreconditionRequired represents http status code 428.
type StatusProcessing ¶
type StatusProcessing struct{}
StatusProcessing represents http status code 102.
type StatusProxyAuthRequired ¶
type StatusProxyAuthRequired struct{}
StatusProxyAuthRequired represents http status code 407.
type StatusRequestEntityTooLarge ¶
type StatusRequestEntityTooLarge struct{}
StatusRequestEntityTooLarge represents http status code 413.
type StatusRequestHeaderFieldsTooLarge ¶
type StatusRequestHeaderFieldsTooLarge struct{}
StatusRequestHeaderFieldsTooLarge represents http status code 431.
type StatusRequestTimeout ¶
type StatusRequestTimeout struct{}
StatusRequestTimeout represents http status code 408.
type StatusRequestURITooLong ¶
type StatusRequestURITooLong struct{}
StatusRequestURITooLong represents http status code 414.
type StatusRequestedRangeNotSatisfiable ¶
type StatusRequestedRangeNotSatisfiable struct{}
StatusRequestedRangeNotSatisfiable represents http status code 416.
type StatusResetContent ¶
type StatusResetContent struct{}
StatusResetContent represents http status code 205.
type StatusServiceUnavailable ¶
type StatusServiceUnavailable struct{}
StatusServiceUnavailable represents http status code 503.
type StatusSwitchingProtocols ¶
type StatusSwitchingProtocols struct{}
StatusSwitchingProtocols represents http status code 101.
type StatusTemporaryRedirect ¶
type StatusTemporaryRedirect struct{}
StatusTemporaryRedirect represents http status code 307.
type StatusTooManyRequests ¶
type StatusTooManyRequests struct{}
StatusTooManyRequests represents http status code 429.
type StatusUnauthorized ¶
type StatusUnauthorized struct{}
StatusUnauthorized represents http status code 401.
type StatusUnavailableForLegalReasons ¶
type StatusUnavailableForLegalReasons struct{}
StatusUnavailableForLegalReasons represents http status code 451.
type StatusUnprocessableEntity ¶
type StatusUnprocessableEntity struct{}
StatusUnprocessableEntity represents http status code 422.
type StatusUnsupportedMediaType ¶
type StatusUnsupportedMediaType struct{}
StatusUnsupportedMediaType represents http status code 415.
type StatusUpgradeRequired ¶
type StatusUpgradeRequired struct{}
StatusUpgradeRequired represents http status code 426.
type StatusVariantAlsoNegotiates ¶
type StatusVariantAlsoNegotiates struct{}
StatusVariantAlsoNegotiates represents http status code 506.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
lib
|
|
flat-fields
Package ff contains a struct flattening utility.
|
Package ff contains a struct flattening utility. |
gen-status-code
Package main ...
|
Package main ... |
middlewares
Package middlewares contains common middlewares helpers.
|
Package middlewares contains common middlewares helpers. |
middlewares/apidoc
Package apidoc contains a middleware to serve the OpenAPI document.
|
Package apidoc contains a middleware to serve the OpenAPI document. |
middlewares/calm
Package calm implements a middleware to recover from panic.
|
Package calm implements a middleware to recover from panic. |
openapi
Package openapi contains all the necessary types of an OpenAPI document.
|
Package openapi contains all the necessary types of an OpenAPI document. |