Documentation ¶
Index ¶
Constants ¶
const DateFormat = "2006-01-02T15:04:05.999Z"
DateFormat is the layout of dates passed into and out of the API.
Variables ¶
This section is empty.
Functions ¶
func TypescriptTypeName ¶ added in v1.75.2
TypescriptTypeName gets the corresponding TypeScript type for a provided reflect.Type. If the type is an anonymous struct, it returns an empty string.
Types ¶
type API ¶
type API struct { // Version is the corresponding version of the API. // It's concatenated to the BasePath, so assuming the base path is "/api" and the version is "v1" // the API paths will begin with `/api/v1`. // When empty, the version doesn't appear in the API paths. If it starts or ends with one or more // "/", they are stripped from the API endpoint paths. Version string Description string // The package name to use for the Go generated code. PackageName string // BasePath is the base path for the API endpoints. E.g. "/api". // It doesn't require to begin with "/". When empty, "/" is used. BasePath string Auth api.Auth EndpointGroups []*EndpointGroup }
API represents specific API's configuration.
func (*API) Group ¶
func (a *API) Group(name, prefix string) *EndpointGroup
Group adds new endpoints group to API. name must be `^([A-Z0-9]\w*)?$“ prefix must be `^\w*$`.
func (*API) MustWriteDocs ¶ added in v1.82.1
MustWriteDocs generates API documentation and writes it to the specified file path. If an error occurs, it panics.
func (*API) MustWriteGo ¶ added in v1.55.1
MustWriteGo writes generated Go code into a file. If an error occurs, it panics.
func (*API) MustWriteTS ¶ added in v1.63.1
MustWriteTS writes generated TypeScript code into a file indicated by path. The generated code is an API client to run in the browser.
If an error occurs, it panics.
func (*API) MustWriteTSMock ¶ added in v1.91.2
MustWriteTSMock writes generated TypeScript code into a file indicated by path. The generated code is an API client mock to run in the browser.
If an error occurs, it panics.
type Endpoint ¶
type Endpoint struct { // Name is a free text used to name the endpoint for documentation purpose. // It cannot be empty. Name string // Description is a free text to describe the endpoint for documentation purpose. Description string // GoName is an identifier used by the Go generator to generate specific server side code for this // endpoint. // // It must start with an uppercase letter and fulfill the Go language specification for method // names (https://go.dev/ref/spec#MethodName). // It cannot be empty. GoName string // TypeScriptName is an identifier used by the TypeScript generator to generate specific client // code for this endpoint // // It must start with a lowercase letter and can only contains letters, digits, _, and $. // It cannot be empty. TypeScriptName string NoCookieAuth bool NoAPIAuth bool // Request is the type that defines the format of the request body. Request interface{} // Response is the type that defines the format of the response body. Response interface{} // QueryParams is the list of query parameters that the endpoint accepts. QueryParams []Param // PathParams is the list of path parameters that appear in the path associated with this // endpoint. PathParams []Param // ResponseMock is the data to use as a response for the generated mocks. // It must be of the same type than Response. // If a mock generator is called it must not be nil unless Response is nil. ResponseMock interface{} }
Endpoint represents endpoint's configuration.
func (*Endpoint) CookieAuth ¶
CookieAuth returns endpoint's cookie auth status.
type EndpointGroup ¶
type EndpointGroup struct { // Name is the group name. // // Go generator uses it as part of type, functions, interfaces names, and in code comments. // The casing is adjusted according where it's used. // // TypeScript generator uses it as part of types names for the API functionality of this group. // The casing is adjusted according where it's used. // // Document generator uses as it is. Name string // Prefix is a prefix used for // // Go generator uses it as part of variables names, error messages, and the URL base path for the group. // The casing is adjusted according where it's used, but for the URL base path, lowercase is used. // // TypeScript generator uses it for composing the URL base path (lowercase). // // Document generator uses as it is. Prefix string // contains filtered or unexported fields }
EndpointGroup represents endpoints group. You should always create a group using API.Group because it validates the field values to guarantee correct code generation.
func (*EndpointGroup) Delete ¶ added in v1.57.1
func (eg *EndpointGroup) Delete(path string, endpoint *Endpoint)
Delete adds new DELETE endpoint to endpoints group. It panics if path doesn't begin with '/'.
func (*EndpointGroup) Get ¶
func (eg *EndpointGroup) Get(path string, endpoint *Endpoint)
Get adds new GET endpoint to endpoints group. It panics if path doesn't begin with '/'.
func (*EndpointGroup) Patch ¶ added in v1.54.1
func (eg *EndpointGroup) Patch(path string, endpoint *Endpoint)
Patch adds new PATCH endpoint to endpoints group. It panics if path doesn't begin with '/'.
func (*EndpointGroup) Post ¶ added in v1.55.1
func (eg *EndpointGroup) Post(path string, endpoint *Endpoint)
Post adds new POST endpoint to endpoints group. It panics if path doesn't begin with '/'.
type StringBuilder ¶ added in v1.75.2
StringBuilder is an extension of strings.Builder that allows for writing formatted lines.
func (*StringBuilder) Writelnf ¶ added in v1.75.2
func (s *StringBuilder) Writelnf(format string, a ...interface{})
Writelnf formats arguments according to a format specifier and appends the resulting string to the StringBuilder's buffer.
type Types ¶ added in v1.75.2
type Types struct {
// contains filtered or unexported fields
}
Types handles generating definitions from types.
func NewTypes ¶ added in v1.75.2
func NewTypes() Types
NewTypes creates a new type definition generator.
func (*Types) All ¶ added in v1.75.2
All returns a map containing every top-level and their dependency types with their associated name.
TODO: see how to have a better implementation for adding to seen, uniqueNames, and all.
func (*Types) GenerateTypescriptDefinitions ¶ added in v1.75.2
GenerateTypescriptDefinitions returns the TypeScript class definitions corresponding to the registered Go types.