Documentation ¶
Overview ¶
Package fiber is an Express inspired web framework built on top of Fasthttp, the fastest HTTP engine for Go. Designed to ease things up for fast development with zero memory allocation and performance in mind.
Index ¶
- Constants
- Variables
- func DefaultErrorHandler(c Ctx, err error) error
- func GetTrimmedParam(param string) string
- func IndexRune(str string, needle int32) bool
- func IsChild() bool
- func IsMethodIdempotent(m string) bool
- func IsMethodSafe(m string) bool
- func Query[V QueryType](c Ctx, key string, defaultValue ...V) V
- func ReleaseAgent(a *Agent)
- func ReleaseArgs(a *Args)
- func ReleaseClient(c *Client)
- func ReleaseFormFile(ff *FormFile)
- func ReleaseRedirect(r *Redirect)
- func ReleaseResponse(resp *Response)
- func RemoveEscapeChar(word string) string
- func RoutePatternMatch(path, pattern string, cfg ...Config) bool
- type Agent
- func (a *Agent) Add(k, v string) *Agent
- func (a *Agent) AddBytesK(k []byte, v string) *Agent
- func (a *Agent) AddBytesKV(k, v []byte) *Agent
- func (a *Agent) AddBytesV(k string, v []byte) *Agent
- func (a *Agent) BasicAuth(username, password string) *Agent
- func (a *Agent) BasicAuthBytes(username, password []byte) *Agent
- func (a *Agent) Body(body []byte) *Agent
- func (a *Agent) BodyStream(bodyStream io.Reader, bodySize int) *Agent
- func (a *Agent) BodyString(bodyString string) *Agent
- func (a *Agent) Boundary(boundary string) *Agent
- func (a *Agent) Bytes() (int, []byte, []error)
- func (a *Agent) ConnectionClose() *Agent
- func (a *Agent) ContentType(contentType string) *Agent
- func (a *Agent) ContentTypeBytes(contentType []byte) *Agent
- func (a *Agent) Cookie(key, value string) *Agent
- func (a *Agent) CookieBytesK(key []byte, value string) *Agent
- func (a *Agent) CookieBytesKV(key, value []byte) *Agent
- func (a *Agent) Cookies(kv ...string) *Agent
- func (a *Agent) CookiesBytesKV(kv ...[]byte) *Agent
- func (a *Agent) Debug(w ...io.Writer) *Agent
- func (a *Agent) Dest(dest []byte) *Agent
- func (a *Agent) FileData(formFiles ...*FormFile) *Agent
- func (a *Agent) Form(args *Args) *Agent
- func (a *Agent) Host(host string) *Agent
- func (a *Agent) HostBytes(host []byte) *Agent
- func (a *Agent) InsecureSkipVerify() *Agent
- func (a *Agent) JSON(v any, ctype ...string) *Agent
- func (a *Agent) JSONDecoder(jsonDecoder utils.JSONUnmarshal) *Agent
- func (a *Agent) JSONEncoder(jsonEncoder utils.JSONMarshal) *Agent
- func (a *Agent) MaxRedirectsCount(count int) *Agent
- func (a *Agent) MultipartForm(args *Args) *Agent
- func (a *Agent) Parse() error
- func (a *Agent) QueryString(queryString string) *Agent
- func (a *Agent) QueryStringBytes(queryString []byte) *Agent
- func (a *Agent) Referer(referer string) *Agent
- func (a *Agent) RefererBytes(referer []byte) *Agent
- func (a *Agent) Request() *Request
- func (a *Agent) RetryIf(retryIf RetryIfFunc) *Agent
- func (a *Agent) Reuse() *Agent
- func (a *Agent) SendFile(filename string, fieldname ...string) *Agent
- func (a *Agent) SendFiles(filenamesAndFieldnames ...string) *Agent
- func (a *Agent) Set(k, v string) *Agent
- func (a *Agent) SetBytesK(k []byte, v string) *Agent
- func (a *Agent) SetBytesKV(k, v []byte) *Agent
- func (a *Agent) SetBytesV(k string, v []byte) *Agent
- func (a *Agent) SetResponse(customResp *Response) *Agent
- func (a *Agent) String() (int, string, []error)
- func (a *Agent) Struct(v any) (int, []byte, []error)
- func (a *Agent) TLSConfig(config *tls.Config) *Agent
- func (a *Agent) Timeout(timeout time.Duration) *Agent
- func (a *Agent) UserAgent(userAgent string) *Agent
- func (a *Agent) UserAgentBytes(userAgent []byte) *Agent
- func (a *Agent) XML(v any) *Agent
- type App
- func (app *App) AcquireCtx() Ctx
- func (app *App) Add(methods []string, path string, handler Handler, middleware ...Handler) Router
- func (app *App) All(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Config() Config
- func (app *App) Connect(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Delete(path string, handler Handler, middleware ...Handler) Router
- func (app *App) ErrorHandler(ctx Ctx, err error) error
- func (app *App) Get(path string, handler Handler, middleware ...Handler) Router
- func (app *App) GetRoute(name string) Route
- func (app *App) GetRoutes(filterUseOption ...bool) []Route
- func (app *App) Group(prefix string, handlers ...Handler) Router
- func (app *App) Handler() fasthttp.RequestHandler
- func (app *App) HandlersCount() uint32
- func (app *App) Head(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Hooks() *Hooks
- func (app *App) Listen(addr string, config ...ListenConfig) error
- func (app *App) Listener(ln net.Listener, config ...ListenConfig) error
- func (app *App) MountPath() string
- func (app *App) Name(name string) Router
- func (app *App) NewCtx(fctx *fasthttp.RequestCtx) Ctx
- func (app *App) NewCtxFunc(function func(app *App) CustomCtx)
- func (app *App) Options(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Patch(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Post(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Put(path string, handler Handler, middleware ...Handler) Router
- func (app *App) RegisterCustomBinder(binder CustomBinder)
- func (app *App) ReleaseCtx(c Ctx)
- func (app *App) Route(path string) Register
- func (app *App) Server() *fasthttp.Server
- func (app *App) SetTLSHandler(tlsHandler *TLSHandler)
- func (app *App) Shutdown() error
- func (app *App) ShutdownWithContext(ctx context.Context) error
- func (app *App) ShutdownWithTimeout(timeout time.Duration) error
- func (app *App) Stack() [][]*Route
- func (app *App) Static(prefix, root string, config ...Static) Router
- func (app *App) Test(req *http.Request, msTimeout ...int) (*http.Response, error)
- func (app *App) Trace(path string, handler Handler, middleware ...Handler) Router
- func (app *App) Use(args ...any) Router
- type Args
- type Bind
- func (b *Bind) Body(out any) error
- func (b *Bind) Cookie(out any) error
- func (b *Bind) Custom(name string, dest any) error
- func (b *Bind) Form(out any) error
- func (b *Bind) Header(out any) error
- func (b *Bind) JSON(out any) error
- func (b *Bind) MultipartForm(out any) error
- func (b *Bind) Must() *Bind
- func (b *Bind) Query(out any) error
- func (b *Bind) RespHeader(out any) error
- func (b *Bind) Should() *Bind
- func (b *Bind) URI(out any) error
- func (b *Bind) XML(out any) error
- type Client
- type Colors
- type Config
- type Constraint
- type ConversionError
- type Cookie
- type Ctx
- type CustomBinder
- type CustomCtx
- type DefaultCtx
- func (c *DefaultCtx) Accepts(offers ...string) string
- func (c *DefaultCtx) AcceptsCharsets(offers ...string) string
- func (c *DefaultCtx) AcceptsEncodings(offers ...string) string
- func (c *DefaultCtx) AcceptsLanguages(offers ...string) string
- func (c *DefaultCtx) App() *App
- func (c *DefaultCtx) Append(field string, values ...string)
- func (c *DefaultCtx) Attachment(filename ...string)
- func (c *DefaultCtx) AutoFormat(body any) error
- func (c *DefaultCtx) BaseURL() string
- func (c *DefaultCtx) Bind() *Bind
- func (c *DefaultCtx) BindVars(vars Map) error
- func (c *DefaultCtx) Body() []byte
- func (c *DefaultCtx) BodyRaw() []byte
- func (c *DefaultCtx) ClearCookie(key ...string)
- func (c *DefaultCtx) ClientHelloInfo() *tls.ClientHelloInfo
- func (c *DefaultCtx) Context() *fasthttp.RequestCtx
- func (c *DefaultCtx) Cookie(cookie *Cookie)
- func (c *DefaultCtx) Cookies(key string, defaultValue ...string) string
- func (c *DefaultCtx) Download(file string, filename ...string) error
- func (c *DefaultCtx) FormFile(key string) (*multipart.FileHeader, error)
- func (c *DefaultCtx) FormValue(key string, defaultValue ...string) string
- func (c *DefaultCtx) Format(handlers ...ResFmt) error
- func (c *DefaultCtx) Fresh() bool
- func (c *DefaultCtx) Get(key string, defaultValue ...string) string
- func (c *DefaultCtx) GetRespHeader(key string, defaultValue ...string) string
- func (c *DefaultCtx) GetRouteURL(routeName string, params Map) (string, error)
- func (c *DefaultCtx) Host() string
- func (c *DefaultCtx) Hostname() string
- func (c *DefaultCtx) IP() string
- func (c *DefaultCtx) IPs() []string
- func (c *DefaultCtx) Is(extension string) bool
- func (c *DefaultCtx) IsFromLocal() bool
- func (c *DefaultCtx) IsProxyTrusted() bool
- func (c *DefaultCtx) JSON(data any, ctype ...string) error
- func (c *DefaultCtx) JSONP(data any, callback ...string) error
- func (c *DefaultCtx) Links(link ...string)
- func (c *DefaultCtx) Locals(key any, value ...any) any
- func (c *DefaultCtx) Location(path string)
- func (c *DefaultCtx) Method(override ...string) string
- func (c *DefaultCtx) MultipartForm() (*multipart.Form, error)
- func (c *DefaultCtx) Next() error
- func (c *DefaultCtx) OriginalURL() string
- func (c *DefaultCtx) Params(key string, defaultValue ...string) string
- func (c *DefaultCtx) ParamsInt(key string, defaultValue ...int) (int, error)
- func (c *DefaultCtx) Path(override ...string) string
- func (c *DefaultCtx) Port() string
- func (c *DefaultCtx) Protocol() string
- func (c *DefaultCtx) Queries() map[string]string
- func (c *DefaultCtx) Query(key string, defaultValue ...string) string
- func (c *DefaultCtx) Range(size int) (Range, error)
- func (c *DefaultCtx) Redirect() *Redirect
- func (c *DefaultCtx) Render(name string, bind Map, layouts ...string) error
- func (c *DefaultCtx) Request() *fasthttp.Request
- func (c *DefaultCtx) Reset(fctx *fasthttp.RequestCtx)
- func (c *DefaultCtx) Response() *fasthttp.Response
- func (c *DefaultCtx) RestartRouting() error
- func (c *DefaultCtx) Route() *Route
- func (*DefaultCtx) SaveFile(fileheader *multipart.FileHeader, path string) error
- func (*DefaultCtx) SaveFileToStorage(fileheader *multipart.FileHeader, path string, storage Storage) error
- func (c *DefaultCtx) Scheme() string
- func (c *DefaultCtx) Secure() bool
- func (c *DefaultCtx) Send(body []byte) error
- func (c *DefaultCtx) SendFile(file string, compress ...bool) error
- func (c *DefaultCtx) SendStatus(status int) error
- func (c *DefaultCtx) SendStream(stream io.Reader, size ...int) error
- func (c *DefaultCtx) SendString(body string) error
- func (c *DefaultCtx) Set(key, val string)
- func (c *DefaultCtx) SetUserContext(ctx context.Context)
- func (c *DefaultCtx) Stale() bool
- func (c *DefaultCtx) Status(status int) Ctx
- func (c *DefaultCtx) String() string
- func (c *DefaultCtx) Subdomains(offset ...int) []string
- func (c *DefaultCtx) Type(extension string, charset ...string) Ctx
- func (c *DefaultCtx) UserContext() context.Context
- func (c *DefaultCtx) Vary(fields ...string)
- func (c *DefaultCtx) Write(p []byte) (int, error)
- func (c *DefaultCtx) WriteString(s string) (int, error)
- func (c *DefaultCtx) Writef(f string, a ...any) (int, error)
- func (c *DefaultCtx) XHR() bool
- func (c *DefaultCtx) XML(data any) error
- type EmptyFieldError
- type Error
- type ErrorHandler
- type FormFile
- type Group
- func (grp *Group) Add(methods []string, path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) All(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Connect(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Delete(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Get(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Group(prefix string, handlers ...Handler) Router
- func (grp *Group) Head(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Name(name string) Router
- func (grp *Group) Options(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Patch(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Post(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Put(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Route(path string) Register
- func (grp *Group) Static(prefix, root string, config ...Static) Router
- func (grp *Group) Trace(path string, handler Handler, middleware ...Handler) Router
- func (grp *Group) Use(args ...any) Router
- type Handler
- type Hooks
- func (h *Hooks) OnFork(handler ...OnForkHandler)
- func (h *Hooks) OnGroup(handler ...OnGroupHandler)
- func (h *Hooks) OnGroupName(handler ...OnGroupNameHandler)
- func (h *Hooks) OnListen(handler ...OnListenHandler)
- func (h *Hooks) OnMount(handler ...OnMountHandler)
- func (h *Hooks) OnName(handler ...OnNameHandler)
- func (h *Hooks) OnRoute(handler ...OnRouteHandler)
- func (h *Hooks) OnShutdown(handler ...OnShutdownHandler)
- type InvalidUnmarshalError
- type ListenConfig
- type ListenData
- type Map
- type MarshalerError
- type MultiError
- type OnForkHandler
- type OnGroupHandler
- type OnGroupNameHandler
- type OnListenHandler
- type OnMountHandler
- type OnNameHandler
- type OnRouteHandler
- type OnShutdownHandler
- type QueryType
- type QueryTypeFloat
- type QueryTypeInteger
- type QueryTypeIntegerSigned
- type QueryTypeIntegerUnsigned
- type Range
- type RangeSet
- type Redirect
- func (r *Redirect) Back(fallback ...string) error
- func (r *Redirect) Message(key string) string
- func (r *Redirect) Messages() map[string]string
- func (r *Redirect) OldInput(key string) string
- func (r *Redirect) OldInputs() map[string]string
- func (r *Redirect) Route(name string, config ...RedirectConfig) error
- func (r *Redirect) Status(code int) *Redirect
- func (r *Redirect) To(location string) error
- func (r *Redirect) With(key, value string) *Redirect
- func (r *Redirect) WithInput() *Redirect
- type RedirectConfig
- type Register
- type Registering
- func (r *Registering) Add(methods []string, handler Handler, middleware ...Handler) Register
- func (r *Registering) All(handler Handler, middleware ...Handler) Register
- func (r *Registering) Connect(handler Handler, middleware ...Handler) Register
- func (r *Registering) Delete(handler Handler, middleware ...Handler) Register
- func (r *Registering) Get(handler Handler, middleware ...Handler) Register
- func (r *Registering) Head(handler Handler, middleware ...Handler) Register
- func (r *Registering) Options(handler Handler, middleware ...Handler) Register
- func (r *Registering) Patch(handler Handler, middleware ...Handler) Register
- func (r *Registering) Post(handler Handler, middleware ...Handler) Register
- func (r *Registering) Put(handler Handler, middleware ...Handler) Register
- func (r *Registering) Route(path string) Register
- func (r *Registering) Static(root string, config ...Static) Register
- func (r *Registering) Trace(handler Handler, middleware ...Handler) Register
- type Request
- type ResFmt
- type Response
- type RetryIfFunc
- type Route
- type RouteMessage
- type Router
- type Static
- type Storage
- type StructValidator
- type SyntaxError
- type TLSHandler
- type TypeConstraint
- type UnknownKeyError
- type UnmarshalTypeError
- type UnsupportedTypeError
- type UnsupportedValueError
- type Views
Constants ¶
const ( DefaultBodyLimit = 4 * 1024 * 1024 DefaultConcurrency = 256 * 1024 DefaultReadBufferSize = 4096 DefaultWriteBufferSize = 4096 DefaultCompressedFileSuffix = ".fiber.gz" )
Default Config values
const ( MethodGet = "GET" // RFC 7231, 4.3.1 MethodHead = "HEAD" // RFC 7231, 4.3.2 MethodPost = "POST" // RFC 7231, 4.3.3 MethodPut = "PUT" // RFC 7231, 4.3.4 MethodPatch = "PATCH" // RFC 5789 MethodDelete = "DELETE" // RFC 7231, 4.3.5 MethodConnect = "CONNECT" // RFC 7231, 4.3.6 MethodOptions = "OPTIONS" // RFC 7231, 4.3.7 MethodTrace = "TRACE" // RFC 7231, 4.3.8 )
HTTP methods were copied from net/http.
const ( MIMETextXML = "text/xml" MIMETextHTML = "text/html" MIMETextPlain = "text/plain" MIMETextJavaScript = "text/javascript" MIMEApplicationXML = "application/xml" MIMEApplicationJSON = "application/json" // Deprecated: use MIMETextJavaScript instead MIMEApplicationJavaScript = "application/javascript" MIMEApplicationForm = "application/x-www-form-urlencoded" MIMEOctetStream = "application/octet-stream" MIMEMultipartForm = "multipart/form-data" MIMETextXMLCharsetUTF8 = "text/xml; charset=utf-8" MIMETextHTMLCharsetUTF8 = "text/html; charset=utf-8" MIMETextPlainCharsetUTF8 = "text/plain; charset=utf-8" MIMETextJavaScriptCharsetUTF8 = "text/javascript; charset=utf-8" MIMEApplicationXMLCharsetUTF8 = "application/xml; charset=utf-8" MIMEApplicationJSONCharsetUTF8 = "application/json; charset=utf-8" // Deprecated: use MIMETextJavaScriptCharsetUTF8 instead MIMEApplicationJavaScriptCharsetUTF8 = "application/javascript; charset=utf-8" )
MIME types that are commonly used
const ( StatusContinue = 100 // RFC 9110, 15.2.1 StatusSwitchingProtocols = 101 // RFC 9110, 15.2.2 StatusProcessing = 102 // RFC 2518, 10.1 StatusEarlyHints = 103 // RFC 8297 StatusOK = 200 // RFC 9110, 15.3.1 StatusCreated = 201 // RFC 9110, 15.3.2 StatusAccepted = 202 // RFC 9110, 15.3.3 StatusNonAuthoritativeInformation = 203 // RFC 9110, 15.3.4 StatusNoContent = 204 // RFC 9110, 15.3.5 StatusResetContent = 205 // RFC 9110, 15.3.6 StatusPartialContent = 206 // RFC 9110, 15.3.7 StatusMultiStatus = 207 // RFC 4918, 11.1 StatusAlreadyReported = 208 // RFC 5842, 7.1 StatusIMUsed = 226 // RFC 3229, 10.4.1 StatusMultipleChoices = 300 // RFC 9110, 15.4.1 StatusMovedPermanently = 301 // RFC 9110, 15.4.2 StatusFound = 302 // RFC 9110, 15.4.3 StatusSeeOther = 303 // RFC 9110, 15.4.4 StatusNotModified = 304 // RFC 9110, 15.4.5 StatusUseProxy = 305 // RFC 9110, 15.4.6 StatusSwitchProxy = 306 // RFC 9110, 15.4.7 (Unused) StatusTemporaryRedirect = 307 // RFC 9110, 15.4.8 StatusPermanentRedirect = 308 // RFC 9110, 15.4.9 StatusBadRequest = 400 // RFC 9110, 15.5.1 StatusPaymentRequired = 402 // RFC 9110, 15.5.3 StatusForbidden = 403 // RFC 9110, 15.5.4 StatusNotFound = 404 // RFC 9110, 15.5.5 StatusMethodNotAllowed = 405 // RFC 9110, 15.5.6 StatusNotAcceptable = 406 // RFC 9110, 15.5.7 StatusProxyAuthRequired = 407 // RFC 9110, 15.5.8 StatusRequestTimeout = 408 // RFC 9110, 15.5.9 StatusConflict = 409 // RFC 9110, 15.5.10 StatusGone = 410 // RFC 9110, 15.5.11 StatusLengthRequired = 411 // RFC 9110, 15.5.12 StatusPreconditionFailed = 412 // RFC 9110, 15.5.13 StatusRequestEntityTooLarge = 413 // RFC 9110, 15.5.14 StatusRequestURITooLong = 414 // RFC 9110, 15.5.15 StatusUnsupportedMediaType = 415 // RFC 9110, 15.5.16 StatusRequestedRangeNotSatisfiable = 416 // RFC 9110, 15.5.17 StatusExpectationFailed = 417 // RFC 9110, 15.5.18 StatusTeapot = 418 // RFC 9110, 15.5.19 (Unused) StatusMisdirectedRequest = 421 // RFC 9110, 15.5.20 StatusUnprocessableEntity = 422 // RFC 9110, 15.5.21 StatusLocked = 423 // RFC 4918, 11.3 StatusFailedDependency = 424 // RFC 4918, 11.4 StatusTooEarly = 425 // RFC 8470, 5.2. StatusUpgradeRequired = 426 // RFC 9110, 15.5.22 StatusPreconditionRequired = 428 // RFC 6585, 3 StatusTooManyRequests = 429 // RFC 6585, 4 StatusRequestHeaderFieldsTooLarge = 431 // RFC 6585, 5 StatusInternalServerError = 500 // RFC 9110, 15.6.1 StatusNotImplemented = 501 // RFC 9110, 15.6.2 StatusBadGateway = 502 // RFC 9110, 15.6.3 StatusGatewayTimeout = 504 // RFC 9110, 15.6.5 StatusHTTPVersionNotSupported = 505 // RFC 9110, 15.6.6 StatusVariantAlsoNegotiates = 506 // RFC 2295, 8.1 StatusInsufficientStorage = 507 // RFC 4918, 11.5 StatusLoopDetected = 508 // RFC 5842, 7.2 StatusNotExtended = 510 // RFC 2774, 7 StatusNetworkAuthenticationRequired = 511 // RFC 6585, 6 )
HTTP status codes were copied from net/http with the following updates: - Rename StatusNonAuthoritativeInfo to StatusNonAuthoritativeInformation - Add StatusSwitchProxy (306) NOTE: Keep this list in sync with statusMessage
const ( HeaderAuthorization = "Authorization" HeaderProxyAuthenticate = "Proxy-Authenticate" HeaderProxyAuthorization = "Proxy-Authorization" HeaderWWWAuthenticate = "WWW-Authenticate" HeaderAge = "Age" HeaderCacheControl = "Cache-Control" HeaderClearSiteData = "Clear-Site-Data" HeaderExpires = "Expires" HeaderPragma = "Pragma" HeaderWarning = "Warning" HeaderAcceptCH = "Accept-CH" HeaderAcceptCHLifetime = "Accept-CH-Lifetime" HeaderContentDPR = "Content-DPR" HeaderDPR = "DPR" HeaderEarlyData = "Early-Data" HeaderSaveData = "Save-Data" HeaderViewportWidth = "Viewport-Width" HeaderWidth = "Width" HeaderETag = "ETag" HeaderIfMatch = "If-Match" HeaderIfModifiedSince = "If-Modified-Since" HeaderIfNoneMatch = "If-None-Match" HeaderIfUnmodifiedSince = "If-Unmodified-Since" HeaderLastModified = "Last-Modified" HeaderVary = "Vary" HeaderConnection = "Connection" HeaderKeepAlive = "Keep-Alive" HeaderAccept = "Accept" HeaderAcceptCharset = "Accept-Charset" HeaderAcceptEncoding = "Accept-Encoding" HeaderAcceptLanguage = "Accept-Language" HeaderCookie = "Cookie" HeaderExpect = "Expect" HeaderMaxForwards = "Max-Forwards" HeaderSetCookie = "Set-Cookie" HeaderAccessControlAllowCredentials = "Access-Control-Allow-Credentials" HeaderAccessControlAllowHeaders = "Access-Control-Allow-Headers" HeaderAccessControlAllowMethods = "Access-Control-Allow-Methods" HeaderAccessControlAllowOrigin = "Access-Control-Allow-Origin" HeaderAccessControlExposeHeaders = "Access-Control-Expose-Headers" HeaderAccessControlMaxAge = "Access-Control-Max-Age" HeaderAccessControlRequestHeaders = "Access-Control-Request-Headers" HeaderAccessControlRequestMethod = "Access-Control-Request-Method" HeaderOrigin = "Origin" HeaderTimingAllowOrigin = "Timing-Allow-Origin" HeaderXPermittedCrossDomainPolicies = "X-Permitted-Cross-Domain-Policies" HeaderDNT = "DNT" HeaderTk = "Tk" HeaderContentDisposition = "Content-Disposition" HeaderContentEncoding = "Content-Encoding" HeaderContentLanguage = "Content-Language" HeaderContentLength = "Content-Length" HeaderContentLocation = "Content-Location" HeaderContentType = "Content-Type" HeaderForwarded = "Forwarded" HeaderVia = "Via" HeaderXForwardedFor = "X-Forwarded-For" HeaderXForwardedHost = "X-Forwarded-Host" HeaderXForwardedProto = "X-Forwarded-Proto" HeaderXForwardedProtocol = "X-Forwarded-Protocol" HeaderXForwardedSsl = "X-Forwarded-Ssl" HeaderXUrlScheme = "X-Url-Scheme" HeaderLocation = "Location" HeaderFrom = "From" HeaderHost = "Host" HeaderReferer = "Referer" HeaderReferrerPolicy = "Referrer-Policy" HeaderUserAgent = "User-Agent" HeaderAllow = "Allow" HeaderServer = "Server" HeaderAcceptRanges = "Accept-Ranges" HeaderContentRange = "Content-Range" HeaderIfRange = "If-Range" HeaderRange = "Range" HeaderContentSecurityPolicy = "Content-Security-Policy" HeaderContentSecurityPolicyReportOnly = "Content-Security-Policy-Report-Only" HeaderCrossOriginResourcePolicy = "Cross-Origin-Resource-Policy" HeaderExpectCT = "Expect-CT" HeaderPermissionsPolicy = "Permissions-Policy" HeaderPublicKeyPins = "Public-Key-Pins" HeaderPublicKeyPinsReportOnly = "Public-Key-Pins-Report-Only" HeaderStrictTransportSecurity = "Strict-Transport-Security" HeaderUpgradeInsecureRequests = "Upgrade-Insecure-Requests" HeaderXContentTypeOptions = "X-Content-Type-Options" HeaderXDownloadOptions = "X-Download-Options" HeaderXFrameOptions = "X-Frame-Options" HeaderXPoweredBy = "X-Powered-By" HeaderXXSSProtection = "X-XSS-Protection" HeaderLastEventID = "Last-Event-ID" HeaderNEL = "NEL" HeaderPingFrom = "Ping-From" HeaderPingTo = "Ping-To" HeaderReportTo = "Report-To" HeaderTE = "TE" HeaderTrailer = "Trailer" HeaderTransferEncoding = "Transfer-Encoding" HeaderSecWebSocketAccept = "Sec-WebSocket-Accept" HeaderSecWebSocketExtensions = "Sec-WebSocket-Extensions" HeaderSecWebSocketKey = "Sec-WebSocket-Key" HeaderSecWebSocketProtocol = "Sec-WebSocket-Protocol" HeaderSecWebSocketVersion = "Sec-WebSocket-Version" HeaderAcceptPatch = "Accept-Patch" HeaderAcceptPushPolicy = "Accept-Push-Policy" HeaderAcceptSignature = "Accept-Signature" HeaderAltSvc = "Alt-Svc" HeaderDate = "Date" HeaderIndex = "Index" HeaderLargeAllocation = "Large-Allocation" HeaderLink = "Link" HeaderPushPolicy = "Push-Policy" HeaderRetryAfter = "Retry-After" HeaderServerTiming = "Server-Timing" HeaderSignature = "Signature" HeaderSignedHeaders = "Signed-Headers" HeaderSourceMap = "SourceMap" HeaderUpgrade = "Upgrade" HeaderXDNSPrefetchControl = "X-DNS-Prefetch-Control" HeaderXPingback = "X-Pingback" HeaderXRequestID = "X-Request-ID" HeaderXRequestedWith = "X-Requested-With" HeaderXRobotsTag = "X-Robots-Tag" HeaderXUACompatible = "X-UA-Compatible" )
HTTP Headers were copied from net/http.
const ( NetworkTCP = "tcp" NetworkTCP4 = "tcp4" NetworkTCP6 = "tcp6" )
Network types that are commonly used
const ( StrGzip = "gzip" StrBr = "br" StrDeflate = "deflate" StrBrotli = "brotli" )
Compression types
const ( CookieSameSiteDisabled = "disabled" // not in RFC, just control "SameSite" attribute will not be set. CookieSameSiteLaxMode = "lax" CookieSameSiteStrictMode = "strict" CookieSameSiteNoneMode = "none" )
Cookie SameSite https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7
const ( ConstraintInt = "int" ConstraintBool = "bool" ConstraintFloat = "float" ConstraintAlpha = "alpha" ConstraintGUID = "guid" ConstraintMinLen = "minLen" ConstraintMaxLen = "maxLen" ConstraintLen = "len" ConstraintBetweenLen = "betweenLen" ConstraintMinLenLower = "minlen" ConstraintMaxLenLower = "maxlen" ConstraintBetweenLenLower = "betweenlen" ConstraintMin = "min" ConstraintMax = "max" ConstraintRange = "range" ConstraintDatetime = "datetime" ConstraintRegex = "regex" )
Route Constraints
const ( FlashCookieName = "fiber_flash" OldInputDataPrefix = "old_input_data_" CookieDataSeparator = "," CookieDataAssigner = ":" )
Cookie name to send flash messages when to use redirection.
const Version = "3.0.0-beta.1"
Version of current fiber package
Variables ¶
var ( ErrRangeMalformed = stdErrors.New("range: malformed range header string") ErrRangeUnsatisfiable = stdErrors.New("range: unsatisfiable range") )
Range errors
var ( ErrBadRequest = NewError(StatusBadRequest) // 400 ErrPaymentRequired = NewError(StatusPaymentRequired) // 402 ErrForbidden = NewError(StatusForbidden) // 403 ErrNotFound = NewError(StatusNotFound) // 404 ErrMethodNotAllowed = NewError(StatusMethodNotAllowed) // 405 ErrNotAcceptable = NewError(StatusNotAcceptable) // 406 ErrProxyAuthRequired = NewError(StatusProxyAuthRequired) // 407 ErrRequestTimeout = NewError(StatusRequestTimeout) // 408 ErrConflict = NewError(StatusConflict) // 409 ErrGone = NewError(StatusGone) // 410 ErrLengthRequired = NewError(StatusLengthRequired) // 411 ErrPreconditionFailed = NewError(StatusPreconditionFailed) // 412 ErrRequestEntityTooLarge = NewError(StatusRequestEntityTooLarge) // 413 ErrRequestURITooLong = NewError(StatusRequestURITooLong) // 414 ErrUnsupportedMediaType = NewError(StatusUnsupportedMediaType) // 415 ErrRequestedRangeNotSatisfiable = NewError(StatusRequestedRangeNotSatisfiable) // 416 ErrExpectationFailed = NewError(StatusExpectationFailed) // 417 ErrTeapot = NewError(StatusTeapot) // 418 ErrMisdirectedRequest = NewError(StatusMisdirectedRequest) // 421 ErrUnprocessableEntity = NewError(StatusUnprocessableEntity) // 422 ErrLocked = NewError(StatusLocked) // 423 ErrFailedDependency = NewError(StatusFailedDependency) // 424 ErrTooEarly = NewError(StatusTooEarly) // 425 ErrUpgradeRequired = NewError(StatusUpgradeRequired) // 426 ErrPreconditionRequired = NewError(StatusPreconditionRequired) // 428 ErrTooManyRequests = NewError(StatusTooManyRequests) // 429 ErrRequestHeaderFieldsTooLarge = NewError(StatusRequestHeaderFieldsTooLarge) // 431 ErrInternalServerError = NewError(StatusInternalServerError) // 500 ErrNotImplemented = NewError(StatusNotImplemented) // 501 ErrBadGateway = NewError(StatusBadGateway) // 502 ErrGatewayTimeout = NewError(StatusGatewayTimeout) // 504 ErrHTTPVersionNotSupported = NewError(StatusHTTPVersionNotSupported) // 505 ErrVariantAlsoNegotiates = NewError(StatusVariantAlsoNegotiates) // 506 ErrInsufficientStorage = NewError(StatusInsufficientStorage) // 507 ErrLoopDetected = NewError(StatusLoopDetected) // 508 ErrNotExtended = NewError(StatusNotExtended) // 510 ErrNetworkAuthenticationRequired = NewError(StatusNetworkAuthenticationRequired) // 511 )
Errors
var DefaultColors = Colors{
Black: "\u001b[90m",
Red: "\u001b[91m",
Green: "\u001b[92m",
Yellow: "\u001b[93m",
Blue: "\u001b[94m",
Magenta: "\u001b[95m",
Cyan: "\u001b[96m",
White: "\u001b[97m",
Reset: "\u001b[0m",
}
DefaultColors Default color codes
var DefaultMethods = []string{ MethodGet, MethodHead, MethodPost, MethodPut, MethodDelete, MethodConnect, MethodOptions, MethodTrace, MethodPatch, }
HTTP methods enabled by default
var ErrCustomBinderNotFound = stdErrors.New("binder: custom binder not found, please be sure to enter the right name")
Binder errors
var (
ErrGracefulTimeout = stdErrors.New("shutdown: graceful timeout has been reached, exiting")
)
Graceful shutdown errors
var ( // ErrNoHandlers is returned when c.Format is called with no arguments. ErrNoHandlers = stdErrors.New("format: at least one handler is required, but none were set") )
Format errors
var (
ErrRedirectBackNoFallback = NewError(StatusInternalServerError, "Referer not found, you have to enter fallback URL for redirection.")
)
Fiber redirection errors
Functions ¶
func DefaultErrorHandler ¶
DefaultErrorHandler that process return errors from handlers
func GetTrimmedParam ¶
GetTrimmedParam trims the ':' & '?' from a string
func IsMethodIdempotent ¶
IsMethodIdempotent reports whether the HTTP method is considered idempotent. See https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2
func IsMethodSafe ¶
IsMethodSafe reports whether the HTTP method is considered safe. See https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.1
func Query ¶
Query Retrieves the value of a query parameter from the request's URI. The function is generic and can handle query parameter values of different types. It takes the following parameters: - c: The context object representing the current request. - key: The name of the query parameter. - defaultValue: (Optional) The default value to return in case the query parameter is not found or cannot be parsed. The function performs the following steps:
- Type-asserts the context object to *DefaultCtx.
- Retrieves the raw query parameter value from the request's URI.
- Parses the raw value into the appropriate type based on the generic type parameter V. If parsing fails, the function checks if a default value is provided. If so, it returns the default value.
- Returns the parsed value.
If the generic type cannot be matched to a supported type, the function returns the default value (if provided) or the zero value of type V.
Example usage:
GET /?search=john&age=8 name := Query[string](c, "search") // Returns "john" age := Query[int](c, "age") // Returns 8 unknown := Query[string](c, "unknown", "default") // Returns "default" since the query parameter "unknown" is not found
func ReleaseAgent ¶
func ReleaseAgent(a *Agent)
ReleaseAgent returns an acquired via AcquireAgent to Agent pool.
It is forbidden accessing req and/or it's members after returning it to Agent pool.
func ReleaseArgs ¶
func ReleaseArgs(a *Args)
ReleaseArgs returns the object acquired via AcquireArgs to the pool.
String not access the released Args object, otherwise data races may occur. Copy from fasthttp
func ReleaseClient ¶
func ReleaseClient(c *Client)
ReleaseClient returns c acquired via AcquireClient to client pool.
It is forbidden accessing req and/or it's members after returning it to client pool.
func ReleaseFormFile ¶
func ReleaseFormFile(ff *FormFile)
ReleaseFormFile returns the object acquired via AcquireFormFile to the pool.
String not access the released FormFile object, otherwise data races may occur.
func ReleaseRedirect ¶
func ReleaseRedirect(r *Redirect)
ReleaseRedirect returns c acquired via Redirect to redirect pool.
It is forbidden accessing req and/or its' members after returning it to redirect pool.
func ReleaseResponse ¶
func ReleaseResponse(resp *Response)
ReleaseResponse return resp acquired via AcquireResponse to response pool.
It is forbidden accessing resp and/or it's members after returning it to response pool. Copy from fasthttp
func RemoveEscapeChar ¶
RemoveEscapeChar remove escape characters
func RoutePatternMatch ¶
RoutePatternMatch checks if a given path matches a Fiber route pattern.
Types ¶
type Agent ¶
type Agent struct { // Name is used in User-Agent request header. Name string // NoDefaultUserAgentHeader when set to true, causes the default // User-Agent header to be excluded from the Request. NoDefaultUserAgentHeader bool // HostClient is an embedded fasthttp HostClient *fasthttp.HostClient // contains filtered or unexported fields }
Agent is an object storing all request data for client. Agent instance MUST NOT be used from concurrently running goroutines.
func AcquireAgent ¶
func AcquireAgent() *Agent
AcquireAgent returns an empty Agent instance from Agent pool.
The returned Agent instance may be passed to ReleaseAgent when it is no longer needed. This allows Agent recycling, reduces GC pressure and usually improves performance.
func (*Agent) Add ¶
Add adds the given 'key: value' header.
Multiple headers with the same key may be added with this function. Use Set for setting a single header for the given key.
func (*Agent) AddBytesK ¶
AddBytesK adds the given 'key: value' header.
Multiple headers with the same key may be added with this function. Use SetBytesK for setting a single header for the given key.
func (*Agent) AddBytesKV ¶
AddBytesKV adds the given 'key: value' header.
Multiple headers with the same key may be added with this function. Use SetBytesKV for setting a single header for the given key.
func (*Agent) AddBytesV ¶
AddBytesV adds the given 'key: value' header.
Multiple headers with the same key may be added with this function. Use SetBytesV for setting a single header for the given key.
func (*Agent) BasicAuthBytes ¶
BasicAuthBytes sets URI username and password.
func (*Agent) BodyStream ¶
BodyStream sets request body stream and, optionally body size.
If bodySize is >= 0, then the bodyStream must provide exactly bodySize bytes before returning io.EOF.
If bodySize < 0, then bodyStream is read until io.EOF.
bodyStream.Close() is called after finishing reading all body data if it implements io.Closer.
Note that GET and HEAD requests cannot have body.
func (*Agent) BodyString ¶
BodyString sets request body.
func (*Agent) Bytes ¶
Bytes returns the status code, bytes body and errors of url.
it's not safe to use Agent after calling Agent.Bytes
func (*Agent) ConnectionClose ¶
ConnectionClose sets 'Connection: close' header.
func (*Agent) ContentType ¶
ContentType sets Content-Type header value.
func (*Agent) ContentTypeBytes ¶
ContentTypeBytes sets Content-Type header value.
func (*Agent) CookieBytesK ¶
CookieBytesK sets one 'key: value' cookie.
func (*Agent) CookieBytesKV ¶
CookieBytesKV sets one 'key: value' cookie.
func (*Agent) CookiesBytesKV ¶
CookiesBytesKV sets multiple 'key: value' cookies.
func (*Agent) Dest ¶
Dest sets custom dest.
The contents of dest will be replaced by the response body, if the dest is too small a new slice will be allocated.
func (*Agent) FileData ¶
FileData appends files for multipart form request.
It is recommended obtaining formFile via AcquireFormFile and release it manually in performance-critical code.
func (*Agent) Form ¶
Form sends form request with body if args is non-nil.
It is recommended obtaining args via AcquireArgs and release it manually in performance-critical code.
func (*Agent) InsecureSkipVerify ¶
InsecureSkipVerify controls whether the Agent verifies the server certificate chain and host name.
func (*Agent) JSONDecoder ¶
JSONDecoder sets custom json decoder.
func (*Agent) JSONEncoder ¶
JSONEncoder sets custom json encoder.
func (*Agent) MaxRedirectsCount ¶
MaxRedirectsCount sets max redirect count for GET and HEAD.
func (*Agent) MultipartForm ¶
MultipartForm sends multipart form request with k-v and files.
It is recommended obtaining args via AcquireArgs and release it manually in performance-critical code.
func (*Agent) QueryString ¶
QueryString sets URI query string.
func (*Agent) QueryStringBytes ¶
QueryStringBytes sets URI query string.
func (*Agent) RefererBytes ¶
RefererBytes sets Referer header value.
func (*Agent) RetryIf ¶
func (a *Agent) RetryIf(retryIf RetryIfFunc) *Agent
RetryIf controls whether a retry should be attempted after an error.
By default, will use isIdempotent function from fasthttp
func (*Agent) Reuse ¶
Reuse enables the Agent instance to be used again after one request.
If agent is reusable, then it should be released manually when it is no longer used.
func (*Agent) SendFiles ¶
SendFiles reads files and appends them to multipart form request.
Examples:
SendFile("/path/to/file1", "fieldname1", "/path/to/file2")
func (*Agent) Set ¶
Set sets the given 'key: value' header.
Use Add for setting multiple header values under the same key.
func (*Agent) SetBytesK ¶
SetBytesK sets the given 'key: value' header.
Use AddBytesK for setting multiple header values under the same key.
func (*Agent) SetBytesKV ¶
SetBytesKV sets the given 'key: value' header.
Use AddBytesKV for setting multiple header values under the same key.
func (*Agent) SetBytesV ¶
SetBytesV sets the given 'key: value' header.
Use AddBytesV for setting multiple header values under the same key.
func (*Agent) SetResponse ¶
SetResponse sets custom response for the Agent instance.
It is recommended obtaining custom response via AcquireResponse and release it manually in performance-critical code.
func (*Agent) String ¶
String returns the status code, string body and errors of url.
it's not safe to use Agent after calling Agent.String
func (*Agent) Struct ¶
Struct returns the status code, bytes body and errors of URL. And bytes body will be unmarshalled to given v.
it's not safe to use Agent after calling Agent.Struct
func (*Agent) UserAgentBytes ¶
UserAgentBytes sets User-Agent header value.
type App ¶
type App struct {
// contains filtered or unexported fields
}
App denotes the Fiber application.
func New ¶
New creates a new Fiber named instance.
app := fiber.New()
You can pass optional configuration options by passing a Config struct:
app := fiber.New(fiber.Config{ Prefork: true, ServerHeader: "Fiber", })
func (*App) AcquireCtx ¶
AcquireCtx retrieves a new Ctx from the pool.
func (*App) Connect ¶
Connect registers a route for CONNECT methods that establishes a tunnel to the server identified by the target resource.
func (*App) Delete ¶
Delete registers a route for DELETE methods that deletes the specified resource.
func (*App) ErrorHandler ¶
ErrorHandler is the application's method in charge of finding the appropriate handler for the given request. It searches any mounted sub fibers by their prefixes and if it finds a match, it uses that error handler. Otherwise it uses the configured error handler for the app, which if not set is the DefaultErrorHandler.
func (*App) Get ¶
Get registers a route for GET methods that requests a representation of the specified resource. Requests using GET should only retrieve data.
func (*App) GetRoutes ¶
GetRoutes Get all routes. When filterUseOption equal to true, it will filter the routes registered by the middleware.
func (*App) Group ¶
Group is used for Routes with common prefix to define a new sub-router with optional middleware.
api := app.Group("/api") api.Get("/users", handler)
func (*App) Handler ¶
func (app *App) Handler() fasthttp.RequestHandler
Handler returns the server handler.
func (*App) HandlersCount ¶
HandlersCount returns the amount of registered handlers.
func (*App) Head ¶
Head registers a route for HEAD methods that asks for a response identical to that of a GET request, but without the response body.
func (*App) Listen ¶
func (app *App) Listen(addr string, config ...ListenConfig) error
Listen serves HTTP requests from the given addr. You should enter custom ListenConfig to customize startup. (TLS, mTLS, prefork...)
app.Listen(":8080") app.Listen("127.0.0.1:8080") app.Listen(":8080", ListenConfig{EnablePrefork: true})
func (*App) Listener ¶
func (app *App) Listener(ln net.Listener, config ...ListenConfig) error
Listener serves HTTP requests from the given listener. You should enter custom ListenConfig to customize startup. (prefork, startup message, graceful shutdown...)
func (*App) MountPath ¶
The MountPath property contains one or more path patterns on which a sub-app was mounted.
func (*App) NewCtxFunc ¶
NewCtxFunc allows to customize ctx methods as we want. Note: It doesn't allow adding new methods, only customizing exist methods.
func (*App) Options ¶
Options registers a route for OPTIONS methods that is used to describe the communication options for the target resource.
func (*App) Patch ¶
Patch registers a route for PATCH methods that is used to apply partial modifications to a resource.
func (*App) Post ¶
Post registers a route for POST methods that is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.
func (*App) Put ¶
Put registers a route for PUT methods that replaces all current representations of the target resource with the request payload.
func (*App) RegisterCustomBinder ¶
func (app *App) RegisterCustomBinder(binder CustomBinder)
You can register custom binders to use as Bind().Custom("name"). They should be compatible with CustomBinder interface.
func (*App) ReleaseCtx ¶
ReleaseCtx releases the ctx back into the pool.
func (*App) Route ¶
Route is used to define routes with a common prefix inside the common function. Uses Group method to define new sub-router.
func (*App) SetTLSHandler ¶
func (app *App) SetTLSHandler(tlsHandler *TLSHandler)
You can use SetTLSHandler to use ClientHelloInfo when using TLS with Listener.
func (*App) Shutdown ¶
Shutdown gracefully shuts down the server without interrupting any active connections. Shutdown works by first closing all open listeners and then waiting indefinitely for all connections to return to idle before shutting down.
Make sure the program doesn't exit and waits instead for Shutdown to return.
Shutdown does not close keepalive connections so its recommended to set ReadTimeout to something else than 0.
func (*App) ShutdownWithContext ¶
ShutdownWithContext shuts down the server including by force if the context's deadline is exceeded.
Make sure the program doesn't exit and waits instead for ShutdownWithTimeout to return.
ShutdownWithContext does not close keepalive connections so its recommended to set ReadTimeout to something else than 0.
func (*App) ShutdownWithTimeout ¶
ShutdownWithTimeout gracefully shuts down the server without interrupting any active connections. However, if the timeout is exceeded, ShutdownWithTimeout will forcefully close any active connections. ShutdownWithTimeout works by first closing all open listeners and then waiting for all connections to return to idle before shutting down.
Make sure the program doesn't exit and waits instead for ShutdownWithTimeout to return.
ShutdownWithTimeout does not close keepalive connections so its recommended to set ReadTimeout to something else than 0.
func (*App) Test ¶
Test is used for internal debugging by passing a *http.Request. Timeout is optional and defaults to 1s, -1 will disable it completely.
func (*App) Trace ¶
Trace registers a route for TRACE methods that performs a message loop-back test along the path to the target resource.
func (*App) Use ¶
Use registers a middleware route that will match requests with the provided prefix (which is optional and defaults to "/"). Also, you can pass another app instance as a sub-router along a routing path. It's very useful to split up a large API as many independent routers and compose them as a single service using Use. The fiber's error handler and any of the fiber's sub apps are added to the application's error handlers to be invoked on errors that happen within the prefix route.
app.Use(func(c fiber.Ctx) error { return c.Next() }) app.Use("/api", func(c fiber.Ctx) error { return c.Next() }) app.Use("/api", handler, func(c fiber.Ctx) error { return c.Next() }) subApp := fiber.New() app.Use("/mounted-path", subApp)
This method will match all HTTP verbs: GET, POST, PUT, HEAD etc...
type Args ¶
Args represents query arguments.
It is forbidden copying Args instances. Create new instances instead and use CopyTo().
Args instance MUST NOT be used from concurrently running goroutines. Copy from fasthttp
func AcquireArgs ¶
func AcquireArgs() *Args
AcquireArgs returns an empty Args object from the pool.
The returned Args may be returned to the pool with ReleaseArgs when no longer needed. This allows reducing GC load. Copy from fasthttp
type Bind ¶
type Bind struct {
// contains filtered or unexported fields
}
Bind struct
func (*Bind) Body ¶
Body binds the request body into the struct, map[string]string and map[string][]string. It supports decoding the following content types based on the Content-Type header: application/json, application/xml, application/x-www-form-urlencoded, multipart/form-data If none of the content types above are matched, it'll take a look custom binders by checking the MIMETypes() method of custom binder. If there're no custom binder for mşme type of body, it will return a ErrUnprocessableEntity error.
func (*Bind) Cookie ¶
Cookie binds the requesr cookie strings into the struct, map[string]string and map[string][]string. NOTE: If your cookie is like key=val1,val2; they'll be binded as an slice if your map is map[string][]string. Else, it'll use last element of cookie.
func (*Bind) Custom ¶
To use custom binders, you have to use this method. You can register them from RegisterCustomBinder method of Fiber instance. They're checked by name, if it's not found, it will return an error. NOTE: Should/Must is still valid for Custom binders.
func (*Bind) Header ¶
Header binds the request header strings into the struct, map[string]string and map[string][]string.
func (*Bind) MultipartForm ¶
MultipartForm binds the multipart form into the struct, map[string]string and map[string][]string.
func (*Bind) Must ¶
If you want to handle binder errors automatically, you can use Must. If there's an error it'll return error and 400 as HTTP status.
func (*Bind) Query ¶
QueryParser binds the query string into the struct, map[string]string and map[string][]string.
func (*Bind) RespHeader ¶
RespHeader binds the response header strings into the struct, map[string]string and map[string][]string.
func (*Bind) Should ¶
To handle binder errors manually, you can prefer Should method. It's default behavior of binder.
type Client ¶
type Client struct { // UserAgent is used in User-Agent request header. UserAgent string // NoDefaultUserAgentHeader when set to true, causes the default // User-Agent header to be excluded from the Request. NoDefaultUserAgentHeader bool // When set by an external client of Fiber it will use the provided implementation of a // JSONMarshal // // Allowing for flexibility in using another json library for encoding JSONEncoder utils.JSONMarshal // When set by an external client of Fiber it will use the provided implementation of a // JSONUnmarshal // // Allowing for flexibility in using another json library for decoding JSONDecoder utils.JSONUnmarshal // contains filtered or unexported fields }
Client implements http client.
It is safe calling Client methods from concurrently running goroutines.
func AcquireClient ¶
func AcquireClient() *Client
AcquireClient returns an empty Client instance from client pool.
The returned Client instance may be passed to ReleaseClient when it is no longer needed. This allows Client recycling, reduces GC pressure and usually improves performance.
type Colors ¶
type Colors struct { // Black color. // // Optional. Default: "\u001b[90m" Black string // Red color. // // Optional. Default: "\u001b[91m" Red string // Green color. // // Optional. Default: "\u001b[92m" Green string // Yellow color. // // Optional. Default: "\u001b[93m" Yellow string // Blue color. // // Optional. Default: "\u001b[94m" Blue string // Magenta color. // // Optional. Default: "\u001b[95m" Magenta string // Cyan color. // // Optional. Default: "\u001b[96m" Cyan string // White color. // // Optional. Default: "\u001b[97m" White string // Reset color. // // Optional. Default: "\u001b[0m" Reset string }
Colors is a struct to define custom colors for Fiber app and middlewares.
type Config ¶
type Config struct { // Enables the "Server: value" HTTP header. // // Default: "" ServerHeader string `json:"server_header"` // When set to true, the router treats "/foo" and "/foo/" as different. // By default this is disabled and both "/foo" and "/foo/" will execute the same handler. // // Default: false StrictRouting bool `json:"strict_routing"` // When set to true, enables case sensitive routing. // E.g. "/FoO" and "/foo" are treated as different routes. // By default this is disabled and both "/FoO" and "/foo" will execute the same handler. // // Default: false CaseSensitive bool `json:"case_sensitive"` // When set to true, this relinquishes the 0-allocation promise in certain // cases in order to access the handler values (e.g. request bodies) in an // immutable fashion so that these values are available even if you return // from handler. // // Default: false Immutable bool `json:"immutable"` // When set to true, converts all encoded characters in the route back // before setting the path for the context, so that the routing, // the returning of the current url from the context `ctx.Path()` // and the parameters `ctx.Params(%key%)` with decoded characters will work // // Default: false UnescapePath bool `json:"unescape_path"` // Max body size that the server accepts. // -1 will decline any body size // // Default: 4 * 1024 * 1024 BodyLimit int `json:"body_limit"` // Maximum number of concurrent connections. // // Default: 256 * 1024 Concurrency int `json:"concurrency"` // Views is the interface that wraps the Render function. // // Default: nil Views Views `json:"-"` // Views Layout is the global layout for all template render until override on Render function. // // Default: "" ViewsLayout string `json:"views_layout"` // PassLocalsToViews Enables passing of the locals set on a fiber.Ctx to the template engine // // Default: false PassLocalsToViews bool `json:"pass_locals_to_views"` // The amount of time allowed to read the full request including body. // It is reset after the request handler has returned. // The connection's read deadline is reset when the connection opens. // // Default: unlimited ReadTimeout time.Duration `json:"read_timeout"` // The maximum duration before timing out writes of the response. // It is reset after the request handler has returned. // // Default: unlimited WriteTimeout time.Duration `json:"write_timeout"` // The maximum amount of time to wait for the next request when keep-alive is enabled. // If IdleTimeout is zero, the value of ReadTimeout is used. // // Default: unlimited IdleTimeout time.Duration `json:"idle_timeout"` // Per-connection buffer size for requests' reading. // This also limits the maximum header size. // Increase this buffer if your clients send multi-KB RequestURIs // and/or multi-KB headers (for example, BIG cookies). // // Default: 4096 ReadBufferSize int `json:"read_buffer_size"` // Per-connection buffer size for responses' writing. // // Default: 4096 WriteBufferSize int `json:"write_buffer_size"` // CompressedFileSuffix adds suffix to the original file name and // tries saving the resulting compressed file under the new file name. // // Default: ".fiber.gz" CompressedFileSuffix string `json:"compressed_file_suffix"` // ProxyHeader will enable c.IP() to return the value of the given header key // By default c.IP() will return the Remote IP from the TCP connection // This property can be useful if you are behind a load balancer: X-Forwarded-* // NOTE: headers are easily spoofed and the detected IP addresses are unreliable. // // Default: "" ProxyHeader string `json:"proxy_header"` // GETOnly rejects all non-GET requests if set to true. // This option is useful as anti-DoS protection for servers // accepting only GET requests. The request size is limited // by ReadBufferSize if GETOnly is set. // // Default: false GETOnly bool `json:"get_only"` // ErrorHandler is executed when an error is returned from fiber.Handler. // // Default: DefaultErrorHandler ErrorHandler ErrorHandler `json:"-"` // When set to true, disables keep-alive connections. // The server will close incoming connections after sending the first response to client. // // Default: false DisableKeepalive bool `json:"disable_keepalive"` // When set to true, causes the default date header to be excluded from the response. // // Default: false DisableDefaultDate bool `json:"disable_default_date"` // When set to true, causes the default Content-Type header to be excluded from the response. // // Default: false DisableDefaultContentType bool `json:"disable_default_content_type"` // When set to true, disables header normalization. // By default all header names are normalized: conteNT-tYPE -> Content-Type. // // Default: false DisableHeaderNormalizing bool `json:"disable_header_normalizing"` // This function allows to setup app name for the app // // Default: nil AppName string `json:"app_name"` // StreamRequestBody enables request body streaming, // and calls the handler sooner when given body is // larger then the current limit. StreamRequestBody bool // Will not pre parse Multipart Form data if set to true. // // This option is useful for servers that desire to treat // multipart form data as a binary blob, or choose when to parse the data. // // Server pre parses multipart form data by default. DisablePreParseMultipartForm bool // Aggressively reduces memory usage at the cost of higher CPU usage // if set to true. // // Try enabling this option only if the server consumes too much memory // serving mostly idle keep-alive connections. This may reduce memory // usage by more than 50%. // // Default: false ReduceMemoryUsage bool `json:"reduce_memory_usage"` // When set by an external client of Fiber it will use the provided implementation of a // JSONMarshal // // Allowing for flexibility in using another json library for encoding // Default: json.Marshal JSONEncoder utils.JSONMarshal `json:"-"` // When set by an external client of Fiber it will use the provided implementation of a // JSONUnmarshal // // Allowing for flexibility in using another json library for decoding // Default: json.Unmarshal JSONDecoder utils.JSONUnmarshal `json:"-"` // XMLEncoder set by an external client of Fiber it will use the provided implementation of a // XMLMarshal // // Allowing for flexibility in using another XML library for encoding // Default: xml.Marshal XMLEncoder utils.XMLMarshal `json:"-"` // If you find yourself behind some sort of proxy, like a load balancer, // then certain header information may be sent to you using special X-Forwarded-* headers or the Forwarded header. // For example, the Host HTTP header is usually used to return the requested host. // But when you’re behind a proxy, the actual host may be stored in an X-Forwarded-Host header. // // If you are behind a proxy, you should enable TrustedProxyCheck to prevent header spoofing. // If you enable EnableTrustedProxyCheck and leave TrustedProxies empty Fiber will skip // all headers that could be spoofed. // If request ip in TrustedProxies whitelist then: // 1. c.Scheme() get value from X-Forwarded-Proto, X-Forwarded-Protocol, X-Forwarded-Ssl or X-Url-Scheme header // 2. c.IP() get value from ProxyHeader header. // 3. c.Host() and c.Hostname() get value from X-Forwarded-Host header // But if request ip NOT in Trusted Proxies whitelist then: // 1. c.Scheme() WON't get value from X-Forwarded-Proto, X-Forwarded-Protocol, X-Forwarded-Ssl or X-Url-Scheme header, // will return https in case when tls connection is handled by the app, of http otherwise // 2. c.IP() WON'T get value from ProxyHeader header, will return RemoteIP() from fasthttp context // 3. c.Host() and c.Hostname() WON'T get value from X-Forwarded-Host header, fasthttp.Request.URI().Host() // will be used to get the hostname. // // Default: false EnableTrustedProxyCheck bool `json:"enable_trusted_proxy_check"` // Read EnableTrustedProxyCheck doc. // // Default: []string TrustedProxies []string `json:"trusted_proxies"` // If set to true, c.IP() and c.IPs() will validate IP addresses before returning them. // Also, c.IP() will return only the first valid IP rather than just the raw header // WARNING: this has a performance cost associated with it. // // Default: false EnableIPValidation bool `json:"enable_ip_validation"` // You can define custom color scheme. They'll be used for startup message, route list and some middlewares. // // Optional. Default: DefaultColors ColorScheme Colors `json:"color_scheme"` // If you want to validate header/form/query... automatically when to bind, you can define struct validator. // Fiber doesn't have default validator, so it'll skip validator step if you don't use any validator. // // Default: nil StructValidator StructValidator // RequestMethods provides customizibility for HTTP methods. You can add/remove methods as you wish. // // Optional. Default: DefaultMethods RequestMethods []string // EnableSplittingOnParsers splits the query/body/header parameters by comma when it's true. // For example, you can use it to parse multiple values from a query parameter like this: // /api?foo=bar,baz == foo[]=bar&foo[]=baz // // Optional. Default: false EnableSplittingOnParsers bool `json:"enable_splitting_on_parsers"` // contains filtered or unexported fields }
Config is a struct holding the server settings.
type Constraint ¶
type Constraint struct { ID TypeConstraint RegexCompiler *regexp.Regexp Data []string }
func (*Constraint) CheckConstraint ¶
func (c *Constraint) CheckConstraint(param string) bool
type ConversionError ¶
type ConversionError = schema.ConversionError
ConversionError Conversion error exposes the internal schema.ConversionError for public use.
type Cookie ¶
type Cookie struct { Name string `json:"name"` Value string `json:"value"` Path string `json:"path"` Domain string `json:"domain"` MaxAge int `json:"max_age"` Expires time.Time `json:"expires"` Secure bool `json:"secure"` HTTPOnly bool `json:"http_only"` SameSite string `json:"same_site"` SessionOnly bool `json:"session_only"` }
Cookie data for c.Cookie
type Ctx ¶
type Ctx interface { // Accepts checks if the specified extensions or content types are acceptable. Accepts(offers ...string) string // AcceptsCharsets checks if the specified charset is acceptable. AcceptsCharsets(offers ...string) string // AcceptsEncodings checks if the specified encoding is acceptable. AcceptsEncodings(offers ...string) string // AcceptsLanguages checks if the specified language is acceptable. AcceptsLanguages(offers ...string) string // App returns the *App reference to the instance of the Fiber application App() *App // Append the specified value to the HTTP response header field. // If the header is not already set, it creates the header with the specified value. Append(field string, values ...string) // Attachment sets the HTTP response Content-Disposition header field to attachment. Attachment(filename ...string) // BaseURL returns (protocol + host + base path). BaseURL() string // Body contains the raw body submitted in a POST request. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting instead. Body() []byte // ClearCookie expires a specific cookie by key on the client side. // If no key is provided it expires all cookies that came with the request. ClearCookie(key ...string) // Context returns *fasthttp.RequestCtx that carries a deadline // a cancellation signal, and other values across API boundaries. Context() *fasthttp.RequestCtx // UserContext returns a context implementation that was set by // user earlier or returns a non-nil, empty context,if it was not set earlier. UserContext() context.Context // SetUserContext sets a context implementation by user. SetUserContext(ctx context.Context) // Cookie sets a cookie by passing a cookie struct. Cookie(cookie *Cookie) // Cookies is used for getting a cookie value by key. // Defaults to the empty string "" if the cookie doesn't exist. // If a default value is given, it will return that value if the cookie doesn't exist. // The returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting to use the value outside the Handler. Cookies(key string, defaultValue ...string) string // Download transfers the file from path as an attachment. // Typically, browsers will prompt the user for download. // By default, the Content-Disposition header filename= parameter is the filepath (this typically appears in the browser dialog). // Override this default with the filename parameter. Download(file string, filename ...string) error // Request return the *fasthttp.Request object // This allows you to use all fasthttp request methods // https://godoc.org/github.com/valyala/fasthttp#Request Request() *fasthttp.Request // Response return the *fasthttp.Response object // This allows you to use all fasthttp response methods // https://godoc.org/github.com/valyala/fasthttp#Response Response() *fasthttp.Response // Format performs content-negotiation on the Accept HTTP header. // It uses Accepts to select a proper format and calls the matching // user-provided handler function. // If no accepted format is found, and a format with MediaType "default" is given, // that default handler is called. If no format is found and no default is given, // StatusNotAcceptable is sent. Format(handlers ...ResFmt) error // AutoFormat performs content-negotiation on the Accept HTTP header. // It uses Accepts to select a proper format. // The supported content types are text/html, text/plain, application/json, and application/xml. // For more flexible content negotiation, use Format. // If the header is not specified or there is no proper format, text/plain is used. AutoFormat(body any) error // FormFile returns the first file by key from a MultipartForm. FormFile(key string) (*multipart.FileHeader, error) // FormValue returns the first value by key from a MultipartForm. // Defaults to the empty string "" if the form value doesn't exist. // If a default value is given, it will return that value if the form value does not exist. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting instead. FormValue(key string, defaultValue ...string) string // Fresh returns true when the response is still “fresh” in the client's cache, // otherwise false is returned to indicate that the client cache is now stale // and the full response should be sent. // When a client sends the Cache-Control: no-cache request header to indicate an end-to-end // reload request, this module will return false to make handling these requests transparent. // https://github.com/jshttp/fresh/blob/10e0471669dbbfbfd8de65bc6efac2ddd0bfa057/index.js#L33 Fresh() bool // Get returns the HTTP request header specified by field. // Field names are case-insensitive // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting instead. Get(key string, defaultValue ...string) string // GetRespHeader returns the HTTP response header specified by field. // Field names are case-insensitive // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting instead. GetRespHeader(key string, defaultValue ...string) string // Host contains the host derived from the X-Forwarded-Host or Host HTTP header. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting instead. // Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy. Host() string // Hostname contains the hostname derived from the X-Forwarded-Host or Host HTTP header using the c.Host() method. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting instead. // Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy. Hostname() string // Port returns the remote port of the request. Port() string // IP returns the remote IP address of the request. // Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy. IP() string // IPs returns an string slice of IP addresses specified in the X-Forwarded-For request header. IPs() (ips []string) // Is returns the matching content type, // if the incoming request's Content-Type HTTP header field matches the MIME type specified by the type parameter Is(extension string) bool // JSON converts any interface or string to JSON. // Array and slice values encode as JSON arrays, // except that []byte encodes as a base64-encoded string, // and a nil slice encodes as the null JSON value. // If the ctype parameter is given, this method will set the // Content-Type header equal to ctype. If ctype is not given, // The Content-Type header will be set to application/json. JSON(data any, ctype ...string) error // JSONP sends a JSON response with JSONP support. // This method is identical to JSON, except that it opts-in to JSONP callback support. // By default, the callback name is simply callback. JSONP(data any, callback ...string) error // XML converts any interface or string to XML. // This method also sets the content header to application/xml. XML(data any) error // Links joins the links followed by the property to populate the response's Link HTTP header field. Links(link ...string) // Locals makes it possible to pass any values under string keys scoped to the request // and therefore available to all following routes that match the request. Locals(key any, value ...any) (val any) // Location sets the response Location HTTP header to the specified path parameter. Location(path string) // Method contains a string corresponding to the HTTP method of the request: GET, POST, PUT and so on. Method(override ...string) string // MultipartForm parse form entries from binary. // This returns a map[string][]string, so given a key the value will be a string slice. MultipartForm() (*multipart.Form, error) // Next executes the next method in the stack that matches the current route. Next() (err error) // RestartRouting instead of going to the next handler. This may be useful after // changing the request path. Note that handlers might be executed again. RestartRouting() error // OriginalURL contains the original request URL. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting to use the value outside the Handler. OriginalURL() string // Params is used to get the route parameters. // Defaults to empty string "" if the param doesn't exist. // If a default value is given, it will return that value if the param doesn't exist. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting to use the value outside the Handler. Params(key string, defaultValue ...string) string // ParamsInt is used to get an integer from the route parameters // it defaults to zero if the parameter is not found or if the // parameter cannot be converted to an integer // If a default value is given, it will return that value in case the param // doesn't exist or cannot be converted to an integer ParamsInt(key string, defaultValue ...int) (int, error) // Path returns the path part of the request URL. // Optionally, you could override the path. Path(override ...string) string // Scheme contains the request scheme string: http or https for TLS requests. // Use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy. Scheme() string // Protocol returns the HTTP protocol of request: HTTP/1.1 and HTTP/2. Protocol() string // Queries returns a map of query parameters and their values. // // GET /?name=alex&wanna_cake=2&id= // Queries()["name"] == "alex" // Queries()["wanna_cake"] == "2" // Queries()["id"] == "" // // GET /?field1=value1&field1=value2&field2=value3 // Queries()["field1"] == "value2" // Queries()["field2"] == "value3" // // GET /?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3 // Queries()["list_a"] == "3" // Queries()["list_b[]"] == "3" // Queries()["list_c"] == "1,2,3" // // GET /api/search?filters.author.name=John&filters.category.name=Technology&filters[customer][name]=Alice&filters[status]=pending // Queries()["filters.author.name"] == "John" // Queries()["filters.category.name"] == "Technology" // Queries()["filters[customer][name]"] == "Alice" // Queries()["filters[status]"] == "pending" Queries() map[string]string // Query returns the query string parameter in the url. // Defaults to empty string "" if the query doesn't exist. // If a default value is given, it will return that value if the query doesn't exist. // Returned value is only valid within the handler. Do not store any references. // Make copies or use the Immutable setting to use the value outside the Handler. Query(key string, defaultValue ...string) string // Range returns a struct containing the type and a slice of ranges. Range(size int) (rangeData Range, err error) // Redirect returns the Redirect reference. // Use Redirect().Status() to set custom redirection status code. // If status is not specified, status defaults to 302 Found. // You can use Redirect().To(), Redirect().Route() and Redirect().Back() for redirection. Redirect() *Redirect // Add vars to default view var map binding to template engine. // Variables are read by the Render method and may be overwritten. BindVars(vars Map) error // GetRouteURL generates URLs to named routes, with parameters. URLs are relative, for example: "/user/1831" GetRouteURL(routeName string, params Map) (string, error) // Render a template with data and sends a text/html response. // We support the following engines: https://github.com/gofiber/template Render(name string, bind Map, layouts ...string) error // Route returns the matched Route struct. Route() *Route // SaveFile saves any multipart file to disk. SaveFile(fileheader *multipart.FileHeader, path string) error // SaveFileToStorage saves any multipart file to an external storage system. SaveFileToStorage(fileheader *multipart.FileHeader, path string, storage Storage) error // Secure returns whether a secure connection was established. Secure() bool // Send sets the HTTP response body without copying it. // From this point onward the body argument must not be changed. Send(body []byte) error // SendFile transfers the file from the given path. // The file is not compressed by default, enable this by passing a 'true' argument // Sets the Content-Type response HTTP header field based on the filenames extension. SendFile(file string, compress ...bool) error // SendStatus sets the HTTP status code and if the response body is empty, // it sets the correct status message in the body. SendStatus(status int) error // SendString sets the HTTP response body for string types. // This means no type assertion, recommended for faster performance SendString(body string) error // SendStream sets response body stream and optional body size. SendStream(stream io.Reader, size ...int) error // Set sets the response's HTTP header field to the specified key, value. Set(key, val string) // Subdomains returns a string slice of subdomains in the domain name of the request. // The subdomain offset, which defaults to 2, is used for determining the beginning of the subdomain segments. Subdomains(offset ...int) []string // Stale is not implemented yet, pull requests are welcome! Stale() bool // Status sets the HTTP status for the response. // This method is chainable. Status(status int) Ctx // String returns unique string representation of the ctx. // // The returned value may be useful for logging. String() string // Type sets the Content-Type HTTP header to the MIME type specified by the file extension. Type(extension string, charset ...string) Ctx // Vary adds the given header field to the Vary response header. // This will append the header, if not already listed, otherwise leaves it listed in the current location. Vary(fields ...string) // Write appends p into response body. Write(p []byte) (int, error) // Writef appends f & a into response body writer. Writef(f string, a ...any) (int, error) // WriteString appends s to response body. WriteString(s string) (int, error) // XHR returns a Boolean property, that is true, if the request's X-Requested-With header field is XMLHttpRequest, // indicating that the request was issued by a client library (such as jQuery). XHR() bool // IsProxyTrusted checks trustworthiness of remote ip. // If EnableTrustedProxyCheck false, it returns true // IsProxyTrusted can check remote ip by proxy ranges and ip map. IsProxyTrusted() bool // IsFromLocal will return true if request came from local. IsFromLocal() bool // Reset is a method to reset context fields by given request when to use server handlers. Reset(fctx *fasthttp.RequestCtx) // You can bind body, cookie, headers etc. into the map, map slice, struct easily by using Binding method. // It gives custom binding support, detailed binding options and more. // Replacement of: BodyParser, ParamsParser, GetReqHeaders, GetRespHeaders, AllParams, QueryParser, ReqHeaderParser Bind() *Bind // ClientHelloInfo return CHI from context ClientHelloInfo() *tls.ClientHelloInfo // contains filtered or unexported methods }
Ctx represents the Context which hold the HTTP request and response. It has methods for the request query string, parameters, body, HTTP headers and so on.
type CustomBinder ¶
An interface to register custom binders.
type CustomCtx ¶
type CustomCtx interface { Ctx // Reset is a method to reset context fields by given request when to use server handlers. Reset(fctx *fasthttp.RequestCtx) // contains filtered or unexported methods }
type DefaultCtx ¶
type DefaultCtx struct {
// contains filtered or unexported fields
}
func NewDefaultCtx ¶
func NewDefaultCtx(app *App) *DefaultCtx
func (*DefaultCtx) Accepts ¶
func (c *DefaultCtx) Accepts(offers ...string) string
Accepts checks if the specified extensions or content types are acceptable.
func (*DefaultCtx) AcceptsCharsets ¶
func (c *DefaultCtx) AcceptsCharsets(offers ...string) string
AcceptsCharsets checks if the specified charset is acceptable.
func (*DefaultCtx) AcceptsEncodings ¶
func (c *DefaultCtx) AcceptsEncodings(offers ...string) string
AcceptsEncodings checks if the specified encoding is acceptable.
func (*DefaultCtx) AcceptsLanguages ¶
func (c *DefaultCtx) AcceptsLanguages(offers ...string) string
AcceptsLanguages checks if the specified language is acceptable.
func (*DefaultCtx) App ¶
func (c *DefaultCtx) App() *App
App returns the *App reference to the instance of the Fiber application
func (*DefaultCtx) Append ¶
func (c *DefaultCtx) Append(field string, values ...string)
Append the specified value to the HTTP response header field. If the header is not already set, it creates the header with the specified value.
func (*DefaultCtx) Attachment ¶
func (c *DefaultCtx) Attachment(filename ...string)
Attachment sets the HTTP response Content-Disposition header field to attachment.
func (*DefaultCtx) AutoFormat ¶
func (c *DefaultCtx) AutoFormat(body any) error
AutoFormat performs content-negotiation on the Accept HTTP header. It uses Accepts to select a proper format. The supported content types are text/html, text/plain, application/json, and application/xml. For more flexible content negotiation, use Format. If the header is not specified or there is no proper format, text/plain is used.
func (*DefaultCtx) BaseURL ¶
func (c *DefaultCtx) BaseURL() string
BaseURL returns (protocol + host + base path).
func (*DefaultCtx) Bind ¶
func (c *DefaultCtx) Bind() *Bind
You can bind body, cookie, headers etc. into the map, map slice, struct easily by using Binding method. It gives custom binding support, detailed binding options and more. Replacement of: BodyParser, ParamsParser, GetReqHeaders, GetRespHeaders, AllParams, QueryParser, ReqHeaderParser
func (*DefaultCtx) BindVars ¶
func (c *DefaultCtx) BindVars(vars Map) error
Bind Add vars to default view var map binding to template engine. Variables are read by the Render method and may be overwritten.
func (*DefaultCtx) Body ¶
func (c *DefaultCtx) Body() []byte
Body contains the raw body submitted in a POST request. This method will decompress the body if the 'Content-Encoding' header is provided. It returns the original (or decompressed) body data which is valid only within the handler. Don't store direct references to the returned data. If you need to keep the body's data later, make a copy or use the Immutable option.
func (*DefaultCtx) BodyRaw ¶
func (c *DefaultCtx) BodyRaw() []byte
BodyRaw contains the raw body submitted in a POST request. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead.
func (*DefaultCtx) ClearCookie ¶
func (c *DefaultCtx) ClearCookie(key ...string)
ClearCookie expires a specific cookie by key on the client side. If no key is provided it expires all cookies that came with the request.
func (*DefaultCtx) ClientHelloInfo ¶
func (c *DefaultCtx) ClientHelloInfo() *tls.ClientHelloInfo
ClientHelloInfo return CHI from context
func (*DefaultCtx) Context ¶
func (c *DefaultCtx) Context() *fasthttp.RequestCtx
Context returns *fasthttp.RequestCtx that carries a deadline a cancellation signal, and other values across API boundaries.
func (*DefaultCtx) Cookie ¶
func (c *DefaultCtx) Cookie(cookie *Cookie)
Cookie sets a cookie by passing a cookie struct.
func (*DefaultCtx) Cookies ¶
func (c *DefaultCtx) Cookies(key string, defaultValue ...string) string
Cookies are used for getting a cookie value by key. Defaults to the empty string "" if the cookie doesn't exist. If a default value is given, it will return that value if the cookie doesn't exist. The returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting to use the value outside the Handler.
func (*DefaultCtx) Download ¶
func (c *DefaultCtx) Download(file string, filename ...string) error
Download transfers the file from path as an attachment. Typically, browsers will prompt the user for download. By default, the Content-Disposition header filename= parameter is the filepath (this typically appears in the browser dialog). Override this default with the filename parameter.
func (*DefaultCtx) FormFile ¶
func (c *DefaultCtx) FormFile(key string) (*multipart.FileHeader, error)
FormFile returns the first file by key from a MultipartForm.
func (*DefaultCtx) FormValue ¶
func (c *DefaultCtx) FormValue(key string, defaultValue ...string) string
FormValue returns the first value by key from a MultipartForm. Search is performed in QueryArgs, PostArgs, MultipartForm and FormFile in this particular order. Defaults to the empty string "" if the form value doesn't exist. If a default value is given, it will return that value if the form value does not exist. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead.
func (*DefaultCtx) Format ¶
func (c *DefaultCtx) Format(handlers ...ResFmt) error
Format performs content-negotiation on the Accept HTTP header. It uses Accepts to select a proper format and calls the matching user-provided handler function. If no accepted format is found, and a format with MediaType "default" is given, that default handler is called. If no format is found and no default is given, StatusNotAcceptable is sent.
func (*DefaultCtx) Fresh ¶
func (c *DefaultCtx) Fresh() bool
Fresh returns true when the response is still “fresh” in the client's cache, otherwise false is returned to indicate that the client cache is now stale and the full response should be sent. When a client sends the Cache-Control: no-cache request header to indicate an end-to-end reload request, this module will return false to make handling these requests transparent. https://github.com/jshttp/fresh/blob/10e0471669dbbfbfd8de65bc6efac2ddd0bfa057/index.js#L33
func (*DefaultCtx) Get ¶
func (c *DefaultCtx) Get(key string, defaultValue ...string) string
Get returns the HTTP request header specified by field. Field names are case-insensitive Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead.
func (*DefaultCtx) GetRespHeader ¶
func (c *DefaultCtx) GetRespHeader(key string, defaultValue ...string) string
GetRespHeader returns the HTTP response header specified by field. Field names are case-insensitive Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead.
func (*DefaultCtx) GetRouteURL ¶
func (c *DefaultCtx) GetRouteURL(routeName string, params Map) (string, error)
GetRouteURL generates URLs to named routes, with parameters. URLs are relative, for example: "/user/1831"
func (*DefaultCtx) Host ¶
func (c *DefaultCtx) Host() string
Host contains the host derived from the X-Forwarded-Host or Host HTTP header. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead. Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy.
func (*DefaultCtx) Hostname ¶
func (c *DefaultCtx) Hostname() string
Hostname contains the hostname derived from the X-Forwarded-Host or Host HTTP header using the c.Host() method. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead. Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy.
func (*DefaultCtx) IP ¶
func (c *DefaultCtx) IP() string
IP returns the remote IP address of the request. If ProxyHeader and IP Validation is configured, it will parse that header and return the first valid IP address. Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy.
func (*DefaultCtx) IPs ¶
func (c *DefaultCtx) IPs() []string
IPs returns a string slice of IP addresses specified in the X-Forwarded-For request header. When IP validation is enabled, only valid IPs are returned.
func (*DefaultCtx) Is ¶
func (c *DefaultCtx) Is(extension string) bool
Is returns the matching content type, if the incoming request's Content-Type HTTP header field matches the MIME type specified by the type parameter
func (*DefaultCtx) IsFromLocal ¶
func (c *DefaultCtx) IsFromLocal() bool
IsFromLocal will return true if request came from local.
func (*DefaultCtx) IsProxyTrusted ¶
func (c *DefaultCtx) IsProxyTrusted() bool
IsProxyTrusted checks trustworthiness of remote ip. If EnableTrustedProxyCheck false, it returns true IsProxyTrusted can check remote ip by proxy ranges and ip map.
func (*DefaultCtx) JSON ¶
func (c *DefaultCtx) JSON(data any, ctype ...string) error
JSON converts any interface or string to JSON. Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON value. If the ctype parameter is given, this method will set the Content-Type header equal to ctype. If ctype is not given, The Content-Type header will be set to application/json.
func (*DefaultCtx) JSONP ¶
func (c *DefaultCtx) JSONP(data any, callback ...string) error
JSONP sends a JSON response with JSONP support. This method is identical to JSON, except that it opts-in to JSONP callback support. By default, the callback name is simply callback.
func (*DefaultCtx) Links ¶
func (c *DefaultCtx) Links(link ...string)
Links joins the links followed by the property to populate the response's Link HTTP header field.
func (*DefaultCtx) Locals ¶
func (c *DefaultCtx) Locals(key any, value ...any) any
Locals makes it possible to pass any values under keys scoped to the request and therefore available to all following routes that match the request.
func (*DefaultCtx) Location ¶
func (c *DefaultCtx) Location(path string)
Location sets the response Location HTTP header to the specified path parameter.
func (*DefaultCtx) Method ¶
func (c *DefaultCtx) Method(override ...string) string
Method returns the HTTP request method for the context, optionally overridden by the provided argument. If no override is given or if the provided override is not a valid HTTP method, it returns the current method from the context. Otherwise, it updates the context's method and returns the overridden method as a string.
func (*DefaultCtx) MultipartForm ¶
func (c *DefaultCtx) MultipartForm() (*multipart.Form, error)
MultipartForm parse form entries from binary. This returns a map[string][]string, so given a key the value will be a string slice.
func (*DefaultCtx) Next ¶
func (c *DefaultCtx) Next() error
Next executes the next method in the stack that matches the current route.
func (*DefaultCtx) OriginalURL ¶
func (c *DefaultCtx) OriginalURL() string
OriginalURL contains the original request URL. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting to use the value outside the Handler.
func (*DefaultCtx) Params ¶
func (c *DefaultCtx) Params(key string, defaultValue ...string) string
Params is used to get the route parameters. Defaults to empty string "" if the param doesn't exist. If a default value is given, it will return that value if the param doesn't exist. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting to use the value outside the Handler.
func (*DefaultCtx) ParamsInt ¶
func (c *DefaultCtx) ParamsInt(key string, defaultValue ...int) (int, error)
ParamsInt is used to get an integer from the route parameters it defaults to zero if the parameter is not found or if the parameter cannot be converted to an integer If a default value is given, it will return that value in case the param doesn't exist or cannot be converted to an integer
func (*DefaultCtx) Path ¶
func (c *DefaultCtx) Path(override ...string) string
Path returns the path part of the request URL. Optionally, you could override the path.
func (*DefaultCtx) Port ¶
func (c *DefaultCtx) Port() string
Port returns the remote port of the request.
func (*DefaultCtx) Protocol ¶
func (c *DefaultCtx) Protocol() string
Protocol returns the HTTP protocol of request: HTTP/1.1 and HTTP/2.
func (*DefaultCtx) Queries ¶
func (c *DefaultCtx) Queries() map[string]string
Queries returns a map of query parameters and their values.
GET /?name=alex&wanna_cake=2&id= Queries()["name"] == "alex" Queries()["wanna_cake"] == "2" Queries()["id"] == ""
GET /?field1=value1&field1=value2&field2=value3 Queries()["field1"] == "value2" Queries()["field2"] == "value3"
GET /?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3 Queries()["list_a"] == "3" Queries()["list_b[]"] == "3" Queries()["list_c"] == "1,2,3"
GET /api/search?filters.author.name=John&filters.category.name=Technology&filters[customer][name]=Alice&filters[status]=pending Queries()["filters.author.name"] == "John" Queries()["filters.category.name"] == "Technology" Queries()["filters[customer][name]"] == "Alice" Queries()["filters[status]"] == "pending"
func (*DefaultCtx) Query ¶
func (c *DefaultCtx) Query(key string, defaultValue ...string) string
Query returns the query string parameter in the url. Defaults to empty string "" if the query doesn't exist. If a default value is given, it will return that value if the query doesn't exist. Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting to use the value outside the Handler.
func (*DefaultCtx) Range ¶
func (c *DefaultCtx) Range(size int) (Range, error)
Range returns a struct containing the type and a slice of ranges.
func (*DefaultCtx) Redirect ¶
func (c *DefaultCtx) Redirect() *Redirect
Redirect returns the Redirect reference. Use Redirect().Status() to set custom redirection status code. If status is not specified, status defaults to 302 Found. You can use Redirect().To(), Redirect().Route() and Redirect().Back() for redirection.
func (*DefaultCtx) Render ¶
func (c *DefaultCtx) Render(name string, bind Map, layouts ...string) error
Render a template with data and sends a text/html response. We support the following engines: https://github.com/gofiber/template
func (*DefaultCtx) Request ¶
func (c *DefaultCtx) Request() *fasthttp.Request
Request return the *fasthttp.Request object This allows you to use all fasthttp request methods https://godoc.org/github.com/valyala/fasthttp#Request
func (*DefaultCtx) Reset ¶
func (c *DefaultCtx) Reset(fctx *fasthttp.RequestCtx)
Reset is a method to reset context fields by given request when to use server handlers.
func (*DefaultCtx) Response ¶
func (c *DefaultCtx) Response() *fasthttp.Response
Response return the *fasthttp.Response object This allows you to use all fasthttp response methods https://godoc.org/github.com/valyala/fasthttp#Response
func (*DefaultCtx) RestartRouting ¶
func (c *DefaultCtx) RestartRouting() error
RestartRouting instead of going to the next handler. This may be useful after changing the request path. Note that handlers might be executed again.
func (*DefaultCtx) Route ¶
func (c *DefaultCtx) Route() *Route
Route returns the matched Route struct.
func (*DefaultCtx) SaveFile ¶
func (*DefaultCtx) SaveFile(fileheader *multipart.FileHeader, path string) error
SaveFile saves any multipart file to disk.
func (*DefaultCtx) SaveFileToStorage ¶
func (*DefaultCtx) SaveFileToStorage(fileheader *multipart.FileHeader, path string, storage Storage) error
SaveFileToStorage saves any multipart file to an external storage system.
func (*DefaultCtx) Scheme ¶
func (c *DefaultCtx) Scheme() string
Scheme contains the request protocol string: http or https for TLS requests. Please use Config.EnableTrustedProxyCheck to prevent header spoofing, in case when your app is behind the proxy.
func (*DefaultCtx) Secure ¶
func (c *DefaultCtx) Secure() bool
Secure returns whether a secure connection was established.
func (*DefaultCtx) Send ¶
func (c *DefaultCtx) Send(body []byte) error
Send sets the HTTP response body without copying it. From this point onward the body argument must not be changed.
func (*DefaultCtx) SendFile ¶
func (c *DefaultCtx) SendFile(file string, compress ...bool) error
SendFile transfers the file from the given path. The file is not compressed by default, enable this by passing a 'true' argument Sets the Content-Type response HTTP header field based on the filenames extension.
func (*DefaultCtx) SendStatus ¶
func (c *DefaultCtx) SendStatus(status int) error
SendStatus sets the HTTP status code and if the response body is empty, it sets the correct status message in the body.
func (*DefaultCtx) SendStream ¶
func (c *DefaultCtx) SendStream(stream io.Reader, size ...int) error
SendStream sets response body stream and optional body size.
func (*DefaultCtx) SendString ¶
func (c *DefaultCtx) SendString(body string) error
SendString sets the HTTP response body for string types. This means no type assertion, recommended for faster performance
func (*DefaultCtx) Set ¶
func (c *DefaultCtx) Set(key, val string)
Set sets the response's HTTP header field to the specified key, value.
func (*DefaultCtx) SetUserContext ¶
func (c *DefaultCtx) SetUserContext(ctx context.Context)
SetUserContext sets a context implementation by user.
func (*DefaultCtx) Stale ¶
func (c *DefaultCtx) Stale() bool
Stale is not implemented yet, pull requests are welcome!
func (*DefaultCtx) Status ¶
func (c *DefaultCtx) Status(status int) Ctx
Status sets the HTTP status for the response. This method is chainable.
func (*DefaultCtx) String ¶
func (c *DefaultCtx) String() string
String returns unique string representation of the ctx.
The returned value may be useful for logging.
func (*DefaultCtx) Subdomains ¶
func (c *DefaultCtx) Subdomains(offset ...int) []string
Subdomains returns a string slice of subdomains in the domain name of the request. The subdomain offset, which defaults to 2, is used for determining the beginning of the subdomain segments.
func (*DefaultCtx) Type ¶
func (c *DefaultCtx) Type(extension string, charset ...string) Ctx
Type sets the Content-Type HTTP header to the MIME type specified by the file extension.
func (*DefaultCtx) UserContext ¶
func (c *DefaultCtx) UserContext() context.Context
UserContext returns a context implementation that was set by user earlier or returns a non-nil, empty context,if it was not set earlier.
func (*DefaultCtx) Vary ¶
func (c *DefaultCtx) Vary(fields ...string)
Vary adds the given header field to the Vary response header. This will append the header, if not already listed, otherwise leaves it listed in the current location.
func (*DefaultCtx) Write ¶
func (c *DefaultCtx) Write(p []byte) (int, error)
Write appends p into response body.
func (*DefaultCtx) WriteString ¶
func (c *DefaultCtx) WriteString(s string) (int, error)
WriteString appends s to response body.
func (*DefaultCtx) Writef ¶
func (c *DefaultCtx) Writef(f string, a ...any) (int, error)
Writef appends f & a into response body writer.
func (*DefaultCtx) XHR ¶
func (c *DefaultCtx) XHR() bool
XHR returns a Boolean property, that is true, if the request's X-Requested-With header field is XMLHttpRequest, indicating that the request was issued by a client library (such as jQuery).
func (*DefaultCtx) XML ¶
func (c *DefaultCtx) XML(data any) error
XML converts any interface or string to XML. This method also sets the content header to application/xml.
type EmptyFieldError ¶
type EmptyFieldError = schema.EmptyFieldError
EmptyFieldError error exposes the internal schema.EmptyFieldError for public use.
type Error ¶
Error represents an error that occurred while handling a request.
type ErrorHandler ¶
ErrorHandler defines a function that will process all errors returned from any handlers in the stack
cfg := fiber.Config{} cfg.ErrorHandler = func(c Ctx, err error) error { code := StatusInternalServerError var e *fiber.Error if errors.As(err, &e) { code = e.Code } c.Set(HeaderContentType, MIMETextPlainCharsetUTF8) return c.Status(code).SendString(err.Error()) } app := fiber.New(cfg)
type FormFile ¶
type FormFile struct { // Fieldname is form file's field name Fieldname string // Name is form file's name Name string // Content is form file's content Content []byte // contains filtered or unexported fields }
FormFile represents multipart form file
func AcquireFormFile ¶
func AcquireFormFile() *FormFile
AcquireFormFile returns an empty FormFile object from the pool.
The returned FormFile may be returned to the pool with ReleaseFormFile when no longer needed. This allows reducing GC load.
type Group ¶
type Group struct { Prefix string // contains filtered or unexported fields }
Group struct
func (*Group) Connect ¶
Connect registers a route for CONNECT methods that establishes a tunnel to the server identified by the target resource.
func (*Group) Delete ¶
Delete registers a route for DELETE methods that deletes the specified resource.
func (*Group) Get ¶
Get registers a route for GET methods that requests a representation of the specified resource. Requests using GET should only retrieve data.
func (*Group) Group ¶
Group is used for Routes with common prefix to define a new sub-router with optional middleware.
api := app.Group("/api") api.Get("/users", handler)
func (*Group) Head ¶
Head registers a route for HEAD methods that asks for a response identical to that of a GET request, but without the response body.
func (*Group) Name ¶
Name Assign name to specific route or group itself.
If this method is used before any route added to group, it'll set group name and OnGroupNameHook will be used. Otherwise, it'll set route name and OnName hook will be used.
func (*Group) Options ¶
Options registers a route for OPTIONS methods that is used to describe the communication options for the target resource.
func (*Group) Patch ¶
Patch registers a route for PATCH methods that is used to apply partial modifications to a resource.
func (*Group) Post ¶
Post registers a route for POST methods that is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.
func (*Group) Put ¶
Put registers a route for PUT methods that replaces all current representations of the target resource with the request payload.
func (*Group) Route ¶
Route is used to define routes with a common prefix inside the common function. Uses Group method to define new sub-router.
func (*Group) Trace ¶
Trace registers a route for TRACE methods that performs a message loop-back test along the path to the target resource.
func (*Group) Use ¶
Use registers a middleware route that will match requests with the provided prefix (which is optional and defaults to "/"). Also, you can pass another app instance as a sub-router along a routing path. It's very useful to split up a large API as many independent routers and compose them as a single service using Use. The fiber's error handler and any of the fiber's sub apps are added to the application's error handlers to be invoked on errors that happen within the prefix route.
app.Use(func(c fiber.Ctx) error { return c.Next() }) app.Use("/api", func(c fiber.Ctx) error { return c.Next() }) app.Use("/api", handler, func(c fiber.Ctx) error { return c.Next() }) subApp := fiber.New() app.Use("/mounted-path", subApp)
This method will match all HTTP verbs: GET, POST, PUT, HEAD etc...
type Hooks ¶
type Hooks struct {
// contains filtered or unexported fields
}
Hooks is a struct to use it with App.
func (*Hooks) OnFork ¶
func (h *Hooks) OnFork(handler ...OnForkHandler)
OnFork is a hook to execute user function after fork process.
func (*Hooks) OnGroup ¶
func (h *Hooks) OnGroup(handler ...OnGroupHandler)
OnGroup is a hook to execute user functions on each group registeration. Also you can get group properties by group parameter.
func (*Hooks) OnGroupName ¶
func (h *Hooks) OnGroupName(handler ...OnGroupNameHandler)
OnGroupName is a hook to execute user functions on each group naming. Also you can get group properties by group parameter.
WARN: OnGroupName only works with naming groups, not routes.
func (*Hooks) OnListen ¶
func (h *Hooks) OnListen(handler ...OnListenHandler)
OnListen is a hook to execute user functions on Listen, ListenTLS, Listener.
func (*Hooks) OnMount ¶
func (h *Hooks) OnMount(handler ...OnMountHandler)
OnMount is a hook to execute user function after mounting process. The mount event is fired when sub-app is mounted on a parent app. The parent app is passed as a parameter. It works for app and group mounting.
func (*Hooks) OnName ¶
func (h *Hooks) OnName(handler ...OnNameHandler)
OnName is a hook to execute user functions on each route naming. Also you can get route properties by route parameter.
WARN: OnName only works with naming routes, not groups.
func (*Hooks) OnRoute ¶
func (h *Hooks) OnRoute(handler ...OnRouteHandler)
OnRoute is a hook to execute user functions on each route registeration. Also you can get route properties by route parameter.
func (*Hooks) OnShutdown ¶
func (h *Hooks) OnShutdown(handler ...OnShutdownHandler)
OnShutdown is a hook to execute user functions after Shutdown.
type InvalidUnmarshalError ¶
type InvalidUnmarshalError = errors.InvalidUnmarshalError
An InvalidUnmarshalError describes an invalid argument passed to Unmarshal. (The argument to Unmarshal must be a non-nil pointer.)
type ListenConfig ¶
type ListenConfig struct { // Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only) // WARNING: When prefork is set to true, only "tcp4" and "tcp6" can be chose. // // Default: NetworkTCP4 ListenerNetwork string `json:"listener_network"` // CertFile is a path of certficate file. // If you want to use TLS, you have to enter this field. // // Default : "" CertFile string `json:"cert_file"` // KeyFile is a path of certficate's private key. // If you want to use TLS, you have to enter this field. // // Default : "" CertKeyFile string `json:"cert_key_file"` // CertClientFile is a path of client certficate. // If you want to use mTLS, you have to enter this field. // // Default : "" CertClientFile string `json:"cert_client_file"` // GracefulContext is a field to shutdown Fiber by given context gracefully. // // Default: nil GracefulContext context.Context `json:"graceful_context"` //nolint:containedctx // It's needed to set context inside Listen. // TLSConfigFunc allows customizing tls.Config as you want. // // Default: nil TLSConfigFunc func(tlsConfig *tls.Config) `json:"tls_config_func"` // ListenerFunc allows accessing and customizing net.Listener. // // Default: nil ListenerAddrFunc func(addr net.Addr) `json:"listener_addr_func"` // BeforeServeFunc allows customizing and accessing fiber app before serving the app. // // Default: nil BeforeServeFunc func(app *App) error `json:"before_serve_func"` // When set to true, it will not print out the «Fiber» ASCII art and listening address. // // Default: false DisableStartupMessage bool `json:"disable_startup_message"` // When set to true, this will spawn multiple Go processes listening on the same port. // // Default: false EnablePrefork bool `json:"enable_prefork"` // If set to true, will print all routes with their method, path and handler. // // Default: false EnablePrintRoutes bool `json:"enable_print_routes"` // OnShutdownError allows to customize error behavior when to graceful shutdown server by given signal. // // Default: Print error with log.Fatalf() OnShutdownError func(err error) // OnShutdownSuccess allows to customize success behavior when to graceful shutdown server by given signal. // // Default: nil OnShutdownSuccess func() }
ListenConfig is a struct to customize startup of Fiber.
TODO: Add timeout for graceful shutdown.
type ListenData ¶
ListenData is a struct to use it with OnListenHandler
type MarshalerError ¶
type MarshalerError = errors.MarshalerError
A MarshalerError represents an error from calling a MarshalJSON or MarshalText method.
type MultiError ¶
type MultiError = schema.MultiError
MultiError error exposes the internal schema.MultiError for public use.
type OnForkHandler ¶
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnGroupHandler ¶
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnGroupNameHandler ¶
type OnGroupNameHandler = OnGroupHandler
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnListenHandler ¶
type OnListenHandler = func(ListenData) error
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnMountHandler ¶
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnNameHandler ¶
type OnNameHandler = OnRouteHandler
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnRouteHandler ¶
OnRouteHandler Handlers define a function to create hooks for Fiber.
type OnShutdownHandler ¶
type OnShutdownHandler = func() error
OnRouteHandler Handlers define a function to create hooks for Fiber.
type QueryType ¶
type QueryType interface { QueryTypeInteger | QueryTypeFloat | bool | string | []byte }
type QueryTypeFloat ¶
type QueryTypeInteger ¶
type QueryTypeInteger interface { QueryTypeIntegerSigned | QueryTypeIntegerUnsigned }
type QueryTypeIntegerSigned ¶
type Redirect ¶
type Redirect struct {
// contains filtered or unexported fields
}
Redirect is a struct to use it with Ctx.
func AcquireRedirect ¶
func AcquireRedirect() *Redirect
AcquireRedirect return default Redirect reference from the redirect pool
func (*Redirect) Route ¶
func (r *Redirect) Route(name string, config ...RedirectConfig) error
Route redirects to the Route registered in the app with appropriate parameters. If you want to send queries or params to route, you should use config parameter.
func (*Redirect) Status ¶
Status sets the status code of redirection. If status is not specified, status defaults to 302 Found.
type RedirectConfig ¶
type RedirectConfig struct { Params Map // Route parameters Queries map[string]string // Query map }
A config to use with Redirect().Route() You can specify queries or route parameters. NOTE: We don't use net/url to parse parameters because of it has poor performance. You have to pass map.
type Register ¶
type Register interface { All(handler Handler, middleware ...Handler) Register Get(handler Handler, middleware ...Handler) Register Head(handler Handler, middleware ...Handler) Register Post(handler Handler, middleware ...Handler) Register Put(handler Handler, middleware ...Handler) Register Delete(handler Handler, middleware ...Handler) Register Connect(handler Handler, middleware ...Handler) Register Options(handler Handler, middleware ...Handler) Register Trace(handler Handler, middleware ...Handler) Register Patch(handler Handler, middleware ...Handler) Register Add(methods []string, handler Handler, middleware ...Handler) Register Static(root string, config ...Static) Register Route(path string) Register }
Register defines all router handle interface generate by Route().
type Registering ¶
type Registering struct {
// contains filtered or unexported fields
}
Registering struct
func (*Registering) Add ¶
func (r *Registering) Add(methods []string, handler Handler, middleware ...Handler) Register
Add allows you to specify multiple HTTP methods to register a route.
func (*Registering) All ¶
func (r *Registering) All(handler Handler, middleware ...Handler) Register
All registers a middleware route that will match requests with the provided path which is stored in register struct.
app.Route("/").All(func(c fiber.Ctx) error { return c.Next() }) app.Route("/api").All(func(c fiber.Ctx) error { return c.Next() }) app.Route("/api").All(handler, func(c fiber.Ctx) error { return c.Next() })
This method will match all HTTP verbs: GET, POST, PUT, HEAD etc...
func (*Registering) Connect ¶
func (r *Registering) Connect(handler Handler, middleware ...Handler) Register
Connect registers a route for CONNECT methods that establishes a tunnel to the server identified by the target resource.
func (*Registering) Delete ¶
func (r *Registering) Delete(handler Handler, middleware ...Handler) Register
Delete registers a route for DELETE methods that deletes the specified resource.
func (*Registering) Get ¶
func (r *Registering) Get(handler Handler, middleware ...Handler) Register
Get registers a route for GET methods that requests a representation of the specified resource. Requests using GET should only retrieve data.
func (*Registering) Head ¶
func (r *Registering) Head(handler Handler, middleware ...Handler) Register
Head registers a route for HEAD methods that asks for a response identical to that of a GET request, but without the response body.
func (*Registering) Options ¶
func (r *Registering) Options(handler Handler, middleware ...Handler) Register
Options registers a route for OPTIONS methods that is used to describe the communication options for the target resource.
func (*Registering) Patch ¶
func (r *Registering) Patch(handler Handler, middleware ...Handler) Register
Patch registers a route for PATCH methods that is used to apply partial modifications to a resource.
func (*Registering) Post ¶
func (r *Registering) Post(handler Handler, middleware ...Handler) Register
Post registers a route for POST methods that is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.
func (*Registering) Put ¶
func (r *Registering) Put(handler Handler, middleware ...Handler) Register
Put registers a route for PUT methods that replaces all current representations of the target resource with the request payload.
func (*Registering) Route ¶
func (r *Registering) Route(path string) Register
Route returns a new Register instance whose route path takes the path in the current instance as its prefix.
type Request ¶
Request represents HTTP request.
It is forbidden copying Request instances. Create new instances and use CopyTo instead.
Request instance MUST NOT be used from concurrently running goroutines. Copy from fasthttp
type Response ¶
Response represents HTTP response.
It is forbidden copying Response instances. Create new instances and use CopyTo instead.
Response instance MUST NOT be used from concurrently running goroutines. Copy from fasthttp
func AcquireResponse ¶
func AcquireResponse() *Response
AcquireResponse returns an empty Response instance from response pool.
The returned Response instance may be passed to ReleaseResponse when it is no longer needed. This allows Response recycling, reduces GC pressure and usually improves performance. Copy from fasthttp
type RetryIfFunc ¶
type RetryIfFunc = fasthttp.RetryIfFunc
RetryIfFunc signature of retry if function Request argument passed to RetryIfFunc, if there are any request errors. Copy from fasthttp
type Route ¶
type Route struct { // Public fields Method string `json:"method"` // HTTP method Name string `json:"name"` // Route's name //nolint:revive // Having both a Path (uppercase) and a path (lowercase) is fine Path string `json:"path"` // Original registered route path Params []string `json:"params"` // Case sensitive param keys Handlers []Handler `json:"-"` // Ctx handlers // contains filtered or unexported fields }
Route is a struct that holds all metadata for each registered handler.
type RouteMessage ¶
type RouteMessage struct {
// contains filtered or unexported fields
}
RouteMessage is some message need to be print when server starts
type Router ¶
type Router interface { Use(args ...any) Router Get(path string, handler Handler, middleware ...Handler) Router Head(path string, handler Handler, middleware ...Handler) Router Post(path string, handler Handler, middleware ...Handler) Router Put(path string, handler Handler, middleware ...Handler) Router Delete(path string, handler Handler, middleware ...Handler) Router Connect(path string, handler Handler, middleware ...Handler) Router Options(path string, handler Handler, middleware ...Handler) Router Trace(path string, handler Handler, middleware ...Handler) Router Patch(path string, handler Handler, middleware ...Handler) Router Add(methods []string, path string, handler Handler, middleware ...Handler) Router Static(prefix, root string, config ...Static) Router All(path string, handler Handler, middleware ...Handler) Router Group(prefix string, handlers ...Handler) Router Route(path string) Register Name(name string) Router }
Router defines all router handle interface, including app and group router.
type Static ¶
type Static struct { // When set to true, the server tries minimizing CPU usage by caching compressed files. // This works differently than the github.com/gofiber/compression middleware. // Optional. Default value false Compress bool `json:"compress"` // When set to true, enables byte range requests. // Optional. Default value false ByteRange bool `json:"byte_range"` // When set to true, enables directory browsing. // Optional. Default value false. Browse bool `json:"browse"` // When set to true, enables direct download. // Optional. Default value false. Download bool `json:"download"` // The name of the index file for serving a directory. // Optional. Default value "index.html". Index string `json:"index"` // Expiration duration for inactive file handlers. // Use a negative time.Duration to disable it. // // Optional. Default value 10 * time.Second. CacheDuration time.Duration `json:"cache_duration"` // The value for the Cache-Control HTTP-header // that is set on the file response. MaxAge is defined in seconds. // // Optional. Default value 0. MaxAge int `json:"max_age"` // ModifyResponse defines a function that allows you to alter the response. // // Optional. Default: nil ModifyResponse Handler // Next defines a function to skip this middleware when returned true. // // Optional. Default: nil Next func(c Ctx) bool }
Static defines configuration options when defining static assets.
type Storage ¶
type Storage interface { // Get gets the value for the given key. // `nil, nil` is returned when the key does not exist Get(key string) ([]byte, error) // Set stores the given value for the given key along // with an expiration value, 0 means no expiration. // Empty key or value will be ignored without an error. Set(key string, val []byte, exp time.Duration) error // Delete deletes the value for the given key. // It returns no error if the storage does not contain the key, Delete(key string) error // Reset resets the storage and delete all keys. Reset() error // Close closes the storage and will stop any running garbage // collectors and open connections. Close() error }
Storage interface for communicating with different database/key-value providers
type StructValidator ¶
An interface to register custom struct validator for binding.
type SyntaxError ¶
type SyntaxError = errors.SyntaxError
A SyntaxError is a description of a JSON syntax error.
type TLSHandler ¶
type TLSHandler struct {
// contains filtered or unexported fields
}
TLSHandler object
func (*TLSHandler) GetClientInfo ¶
func (t *TLSHandler) GetClientInfo(info *tls.ClientHelloInfo) (*tls.Certificate, error)
GetClientInfo Callback function to set ClientHelloInfo Must comply with the method structure of https://cs.opensource.google/go/go/+/refs/tags/go1.20:src/crypto/tls/common.go;l=554-563 Since we overlay the method of the tls config in the listener method
type UnknownKeyError ¶
type UnknownKeyError = schema.UnknownKeyError
UnknownKeyError error exposes the internal schema.UnknownKeyError for public use.
type UnmarshalTypeError ¶
type UnmarshalTypeError = errors.UnmarshalTypeError
An UnmarshalTypeError describes a JSON value that was not appropriate for a value of a specific Go type.
type UnsupportedTypeError ¶
type UnsupportedTypeError = errors.UnsupportedTypeError
An UnsupportedTypeError is returned by Marshal when attempting to encode an unsupported value type.
type UnsupportedValueError ¶
type UnsupportedValueError = errors.UnsupportedValueError
encoding/json errors
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
addon
|
|
internal
|
|
memory
Package memory Is a slight copy of the memory storage, but far from the storage interface it can not only work with bytes but directly store any kind of data without having to encode it each time, which gives a huge speed advantage
|
Package memory Is a slight copy of the memory storage, but far from the storage interface it can not only work with bytes but directly store any kind of data without having to encode it each time, which gives a huge speed advantage |
schema
Package gorilla/schema fills a struct with form values.
|
Package gorilla/schema fills a struct with form values. |
storage/memory
Package memory Is a copy of the storage memory from the external storage packet as a purpose to test the behavior in the unittests when using a storages from these packets
|
Package memory Is a copy of the storage memory from the external storage packet as a purpose to test the behavior in the unittests when using a storages from these packets |
middleware
|
|
cache
Special thanks to @codemicro for moving this to fiber core Original middleware: github.com/codemicro/fiber-cache
|
Special thanks to @codemicro for moving this to fiber core Original middleware: github.com/codemicro/fiber-cache |
keyauth
Special thanks to Echo: https://github.com/labstack/echo/blob/master/middleware/key_auth.go
|
Special thanks to Echo: https://github.com/labstack/echo/blob/master/middleware/key_auth.go |