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 ReleaseAgent(a *Agent)
- func ReleaseArgs(a *Args)
- func ReleaseClient(c *Client)
- func ReleaseFormFile(ff *FormFile)
- func ReleaseResponse(resp *Response)
- func RemoveEscapeChar(word string) string
- func RoutePatternMatch(path, pattern string, cfg ...Config) bool
- func SetParserDecoder(parserConfig ParserConfig)
- 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 interface{}, 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 interface{}) (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 interface{}) *Agent
- type App
- func (app *App) AcquireCtx(fctx *fasthttp.RequestCtx) *Ctx
- func (app *App) Add(method, path string, handlers ...Handler) Router
- func (app *App) All(path string, handlers ...Handler) Router
- func (app *App) Config() Config
- func (app *App) Connect(path string, handlers ...Handler) Router
- func (app *App) Delete(path string, handlers ...Handler) Router
- func (app *App) ErrorHandler(ctx *Ctx, err error) error
- func (app *App) Get(path string, handlers ...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, handlers ...Handler) Router
- func (app *App) Hooks() *Hooks
- func (app *App) Listen(addr string) error
- func (app *App) ListenMutualTLS(addr, certFile, keyFile, clientCertFile string) error
- func (app *App) ListenMutualTLSWithCertificate(addr string, cert tls.Certificate, clientCertPool *x509.CertPool) error
- func (app *App) ListenTLS(addr, certFile, keyFile string) error
- func (app *App) ListenTLSWithCertificate(addr string, cert tls.Certificate) error
- func (app *App) Listener(ln net.Listener) error
- func (app *App) Mount(prefix string, subApp *App) Router
- func (app *App) MountPath() string
- func (app *App) Name(name string) Router
- func (app *App) Options(path string, handlers ...Handler) Router
- func (app *App) Patch(path string, handlers ...Handler) Router
- func (app *App) Post(path string, handlers ...Handler) Router
- func (app *App) Put(path string, handlers ...Handler) Router
- func (app *App) ReleaseCtx(c *Ctx)
- func (app *App) Route(prefix string, fn func(router Router), name ...string) Router
- 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, handlers ...Handler) Router
- func (app *App) Use(args ...interface{}) Router
- type Args
- type Client
- type Colors
- type Config
- type Constraint
- type ConversionError
- type Cookie
- type Ctx
- func (c *Ctx) Accepts(offers ...string) string
- func (c *Ctx) AcceptsCharsets(offers ...string) string
- func (c *Ctx) AcceptsEncodings(offers ...string) string
- func (c *Ctx) AcceptsLanguages(offers ...string) string
- func (c *Ctx) AllParams() map[string]string
- func (c *Ctx) App() *App
- func (c *Ctx) Append(field string, values ...string)
- func (c *Ctx) Attachment(filename ...string)
- func (c *Ctx) BaseURL() string
- func (c *Ctx) Bind(vars Map) error
- func (c *Ctx) Body() []byte
- func (c *Ctx) BodyParser(out interface{}) error
- func (c *Ctx) BodyRaw() []byte
- func (c *Ctx) ClearCookie(key ...string)
- func (c *Ctx) ClientHelloInfo() *tls.ClientHelloInfo
- func (c *Ctx) Context() *fasthttp.RequestCtx
- func (c *Ctx) Cookie(cookie *Cookie)
- func (c *Ctx) CookieParser(out interface{}) error
- func (c *Ctx) Cookies(key string, defaultValue ...string) string
- func (c *Ctx) Download(file string, filename ...string) error
- func (c *Ctx) FormFile(key string) (*multipart.FileHeader, error)
- func (c *Ctx) FormValue(key string, defaultValue ...string) string
- func (c *Ctx) Format(body interface{}) error
- func (c *Ctx) Fresh() bool
- func (c *Ctx) Get(key string, defaultValue ...string) string
- func (c *Ctx) GetReqHeaders() map[string][]string
- func (c *Ctx) GetRespHeader(key string, defaultValue ...string) string
- func (c *Ctx) GetRespHeaders() map[string][]string
- func (c *Ctx) GetRouteURL(routeName string, params Map) (string, error)
- func (c *Ctx) Hostname() string
- func (c *Ctx) IP() string
- func (c *Ctx) IPs() []string
- func (c *Ctx) Is(extension string) bool
- func (c *Ctx) IsFromLocal() bool
- func (c *Ctx) IsProxyTrusted() bool
- func (c *Ctx) JSON(data interface{}, ctype ...string) error
- func (c *Ctx) JSONP(data interface{}, callback ...string) error
- func (c *Ctx) Links(link ...string)
- func (c *Ctx) Locals(key interface{}, value ...interface{}) interface{}
- func (c *Ctx) Location(path string)
- func (c *Ctx) Method(override ...string) string
- func (c *Ctx) MultipartForm() (*multipart.Form, error)
- func (c *Ctx) Next() error
- func (c *Ctx) OriginalURL() string
- func (c *Ctx) Params(key string, defaultValue ...string) string
- func (c *Ctx) ParamsInt(key string, defaultValue ...int) (int, error)
- func (c *Ctx) ParamsParser(out interface{}) error
- func (c *Ctx) Path(override ...string) string
- func (c *Ctx) Port() string
- func (c *Ctx) Protocol() string
- func (c *Ctx) Queries() map[string]string
- func (c *Ctx) Query(key string, defaultValue ...string) string
- func (c *Ctx) QueryBool(key string, defaultValue ...bool) bool
- func (c *Ctx) QueryFloat(key string, defaultValue ...float64) float64
- func (c *Ctx) QueryInt(key string, defaultValue ...int) int
- func (c *Ctx) QueryParser(out interface{}) error
- func (c *Ctx) Range(size int) (Range, error)
- func (c *Ctx) Redirect(location string, status ...int) error
- func (c *Ctx) RedirectBack(fallback string, status ...int) error
- func (c *Ctx) RedirectToRoute(routeName string, params Map, status ...int) error
- func (c *Ctx) Render(name string, bind interface{}, layouts ...string) error
- func (c *Ctx) ReqHeaderParser(out interface{}) error
- func (c *Ctx) Request() *fasthttp.Request
- func (c *Ctx) Response() *fasthttp.Response
- func (c *Ctx) RestartRouting() error
- func (c *Ctx) Route() *Route
- func (*Ctx) SaveFile(fileheader *multipart.FileHeader, path string) error
- func (*Ctx) SaveFileToStorage(fileheader *multipart.FileHeader, path string, storage Storage) error
- func (c *Ctx) Secure() bool
- func (c *Ctx) Send(body []byte) error
- func (c *Ctx) SendFile(file string, compress ...bool) error
- func (c *Ctx) SendStatus(status int) error
- func (c *Ctx) SendStream(stream io.Reader, size ...int) error
- func (c *Ctx) SendString(body string) error
- func (c *Ctx) Set(key, val string)
- func (c *Ctx) SetUserContext(ctx context.Context)
- func (c *Ctx) Stale() bool
- func (c *Ctx) Status(status int) *Ctx
- func (c *Ctx) String() string
- func (c *Ctx) Subdomains(offset ...int) []string
- func (c *Ctx) Type(extension string, charset ...string) *Ctx
- func (c *Ctx) UserContext() context.Context
- func (c *Ctx) Vary(fields ...string)
- func (c *Ctx) Write(p []byte) (int, error)
- func (c *Ctx) WriteString(s string) (int, error)
- func (c *Ctx) Writef(f string, a ...interface{}) (int, error)
- func (c *Ctx) XHR() bool
- func (c *Ctx) XML(data interface{}) error
- type EmptyFieldError
- type Error
- type ErrorHandler
- type FormFile
- type Group
- func (grp *Group) Add(method, path string, handlers ...Handler) Router
- func (grp *Group) All(path string, handlers ...Handler) Router
- func (grp *Group) Connect(path string, handlers ...Handler) Router
- func (grp *Group) Delete(path string, handlers ...Handler) Router
- func (grp *Group) Get(path string, handlers ...Handler) Router
- func (grp *Group) Group(prefix string, handlers ...Handler) Router
- func (grp *Group) Head(path string, handlers ...Handler) Router
- func (grp *Group) Mount(prefix string, subApp *App) Router
- func (grp *Group) Name(name string) Router
- func (grp *Group) Options(path string, handlers ...Handler) Router
- func (grp *Group) Patch(path string, handlers ...Handler) Router
- func (grp *Group) Post(path string, handlers ...Handler) Router
- func (grp *Group) Put(path string, handlers ...Handler) Router
- func (grp *Group) Route(prefix string, fn func(router Router), name ...string) Router
- func (grp *Group) Static(prefix, root string, config ...Static) Router
- func (grp *Group) Trace(path string, handlers ...Handler) Router
- func (grp *Group) Use(args ...interface{}) 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 ListenData
- type Map
- type MarshalerError
- type MultiError
- type OnForkHandler
- type OnGroupHandler
- type OnGroupNameHandler
- type OnListenHandler
- type OnMountHandler
- type OnNameHandler
- type OnRouteHandler
- type OnShutdownHandler
- type ParserConfig
- type ParserType
- type Range
- type RangeSet
- type Request
- type Response
- type RetryIfFunc
- type Route
- type RouteMessage
- type Router
- type Static
- type Storage
- 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" // Deprecated: use HeaderPermissionsPolicy instead HeaderFeaturePolicy = "Feature-Policy" 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" //nolint:revive,stylecheck // TODO: Rename to "ConstraintGUID" in v3 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 Version = "2.52.15"
Version of current fiber package
Variables ¶
var ( ErrRangeMalformed = errors.New("range: malformed range header string") ErrRangeUnsatisfiable = errors.New("range: unsatisfiable range") )
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
Functions ¶
func DefaultErrorHandler ¶
DefaultErrorHandler that process return errors from handlers
func GetTrimmedParam ¶
GetTrimmedParam trims the ':' & '?' from a string
func IsMethodIdempotent ¶ added in v2.42.0
IsMethodIdempotent reports whether the HTTP method is considered idempotent. See https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2
func IsMethodSafe ¶ added in v2.42.0
IsMethodSafe reports whether the HTTP method is considered safe. See https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.1
func ReleaseAgent ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ReleaseResponse ¶ added in v2.6.0
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 ¶ added in v2.8.0
RemoveEscapeChar remove escape characters
func RoutePatternMatch ¶ added in v2.41.0
RoutePatternMatch reports whether the given request path would match the provided Fiber route pattern using the same rules as the router. This can be handy in tests or tooling where you need to verify patterns without registering them on an App instance.
An optional Config may be passed to control matching behavior such as case-sensitivity or strict routing. When no configuration is supplied the default Config is used.
Example:
match := fiber.RoutePatternMatch("/api/v1/users", "/api/:version/*")
// match == true
func SetParserDecoder ¶ added in v2.20.0
func SetParserDecoder(parserConfig ParserConfig)
SetParserDecoder allow globally change the option of form decoder, update decoderPool
Types ¶
type Agent ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
BasicAuthBytes sets URI username and password.
func (*Agent) BodyStream ¶ added in v2.6.0
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 ¶ added in v2.6.0
BodyString sets request body.
func (*Agent) Bytes ¶ added in v2.6.0
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 ¶ added in v2.6.0
ConnectionClose sets 'Connection: close' header.
func (*Agent) ContentType ¶ added in v2.6.0
ContentType sets Content-Type header value.
func (*Agent) ContentTypeBytes ¶ added in v2.6.0
ContentTypeBytes sets Content-Type header value.
func (*Agent) CookieBytesK ¶ added in v2.6.0
CookieBytesK sets one 'key: value' cookie.
func (*Agent) CookieBytesKV ¶ added in v2.6.0
CookieBytesKV sets one 'key: value' cookie.
func (*Agent) CookiesBytesKV ¶ added in v2.6.0
CookiesBytesKV sets multiple 'key: value' cookies.
func (*Agent) Dest ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
InsecureSkipVerify controls whether the Agent verifies the server certificate chain and host name.
func (*Agent) JSONDecoder ¶ added in v2.6.0
func (a *Agent) JSONDecoder(jsonDecoder utils.JSONUnmarshal) *Agent
JSONDecoder sets custom json decoder.
func (*Agent) JSONEncoder ¶ added in v2.6.0
func (a *Agent) JSONEncoder(jsonEncoder utils.JSONMarshal) *Agent
JSONEncoder sets custom json encoder.
func (*Agent) MaxRedirectsCount ¶ added in v2.6.0
MaxRedirectsCount sets max redirect count for GET and HEAD.
func (*Agent) MultipartForm ¶ added in v2.6.0
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 ¶ added in v2.6.0
QueryString sets URI query string.
func (*Agent) QueryStringBytes ¶ added in v2.6.0
QueryStringBytes sets URI query string.
func (*Agent) RefererBytes ¶ added in v2.6.0
RefererBytes sets Referer header value.
func (*Agent) RetryIf ¶ added in v2.26.0
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 ¶ added in v2.6.0
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) SendFile ¶ added in v2.6.0
SendFile reads file and appends it to multipart form request.
func (*Agent) SendFiles ¶ added in v2.6.0
SendFiles reads files and appends them to multipart form request.
Examples:
SendFile("/path/to/file1", "fieldname1", "/path/to/file2")
func (*Agent) Set ¶ added in v2.6.0
Set sets the given 'key: value' header.
Use Add for setting multiple header values under the same key.
func (*Agent) SetBytesK ¶ added in v2.6.0
SetBytesK sets the given 'key: value' header.
Use AddBytesK for setting multiple header values under the same key.
func (*Agent) SetBytesKV ¶ added in v2.6.0
SetBytesKV sets the given 'key: value' header.
Use AddBytesKV for setting multiple header values under the same key.
func (*Agent) SetBytesV ¶ added in v2.6.0
SetBytesV sets the given 'key: value' header.
Use AddBytesV for setting multiple header values under the same key.
func (*Agent) SetResponse ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶
func (app *App) AcquireCtx(fctx *fasthttp.RequestCtx) *Ctx
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 ¶ added in v2.20.0
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 ¶ added in v2.39.0
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 ¶ added in v2.24.0
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 ¶
Listen serves HTTP requests from the given addr.
app.Listen(":8080")
app.Listen("127.0.0.1:8080")
func (*App) ListenMutualTLS ¶ added in v2.28.0
ListenMutualTLS serves HTTPS requests from the given addr. certFile, keyFile and clientCertFile are the paths to TLS certificate and key file:
app.ListenMutualTLS(":8080", "./cert.pem", "./cert.key", "./client.pem")
func (*App) ListenMutualTLSWithCertificate ¶ added in v2.43.0
func (app *App) ListenMutualTLSWithCertificate(addr string, cert tls.Certificate, clientCertPool *x509.CertPool) error
ListenMutualTLSWithCertificate serves HTTPS requests from the given addr. cert is a tls.Certificate and clientCertPool is a *x509.CertPool:
app.ListenMutualTLS(":8080", cert, clientCertPool)
func (*App) ListenTLS ¶ added in v2.3.0
ListenTLS serves HTTPS requests from the given addr. certFile and keyFile are the paths to TLS certificate and key file:
app.ListenTLS(":8080", "./cert.pem", "./cert.key")
func (*App) ListenTLSWithCertificate ¶ added in v2.43.0
func (app *App) ListenTLSWithCertificate(addr string, cert tls.Certificate) error
ListenTLS serves HTTPS requests from the given addr. cert is a tls.Certificate
app.ListenTLSWithCertificate(":8080", cert)
func (*App) Mount ¶ added in v2.0.3
Mount attaches 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 Mount. 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.
func (*App) MountPath ¶ added in v2.40.0
The MountPath property contains one or more path patterns on which a sub-app was mounted.
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) ReleaseCtx ¶
ReleaseCtx releases the ctx back into the pool.
func (*App) Route ¶ added in v2.26.0
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 ¶ added in v2.37.0
func (app *App) SetTLSHandler(tlsHandler *TLSHandler)
SetTLSHandler 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 ¶ added in v2.44.0
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 ¶ added in v2.41.0
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 "/").
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()
})
This method will match all HTTP verbs: GET, POST, PUT, HEAD etc...
type Args ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 Client ¶ added in v2.6.0
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 ¶ added in v2.6.0
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 ¶ added in v2.36.0
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 {
// When set to true, this will spawn multiple Go processes listening on the same port.
//
// Default: false
Prefork bool `json:"prefork"`
// 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"`
// Enable or disable ETag header generation, since both weak and strong etags are generated
// using the same hashing method (CRC-32). Weak ETags are the default when enabled.
//
// Default: false
ETag bool `json:"etag"`
// 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"`
// When set to true, it will not print out the «Fiber» ASCII art and listening address.
//
// Default: false
DisableStartupMessage bool `json:"disable_startup_message"`
// 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:"-"`
// 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
Network string
// 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.Protocol() 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.Hostname() get value from X-Forwarded-Host header
// But if request ip NOT in Trusted Proxies whitelist then:
// 1. c.Protocol() 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.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"`
// If set to true, will print all routes with their method, path and handler.
// Default: false
EnablePrintRoutes bool `json:"enable_print_routes"`
// 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"`
// 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 ¶ added in v2.37.0
type Constraint struct {
ID TypeConstraint
RegexCompiler *regexp.Regexp
Data []string
}
func (*Constraint) CheckConstraint ¶ added in v2.37.0
func (c *Constraint) CheckConstraint(param string) bool
type ConversionError ¶ added in v2.13.0
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 struct {
// contains filtered or unexported fields
}
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.
func (*Ctx) AcceptsCharsets ¶
AcceptsCharsets checks if the specified charset is acceptable.
func (*Ctx) AcceptsEncodings ¶
AcceptsEncodings checks if the specified encoding is acceptable.
func (*Ctx) AcceptsLanguages ¶
AcceptsLanguages checks if the specified language is acceptable.
func (*Ctx) AllParams ¶ added in v2.32.0
AllParams Params is used to get all route parameters. Using Params method to get params.
func (*Ctx) Append ¶
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 (*Ctx) Attachment ¶
Attachment sets the HTTP response Content-Disposition header field to attachment.
func (*Ctx) Bind ¶ added in v2.27.0
Bind Add vars to default view var map binding to template engine. Variables are read by the Render method and may be overwritten.
func (*Ctx) Body ¶
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 (*Ctx) BodyParser ¶
BodyParser binds the request body to a struct. 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 All JSON extenstion mime types are supported (eg. application/problem+json) If none of the content types above are matched, it will return a ErrUnprocessableEntity error
func (*Ctx) BodyRaw ¶ added in v2.49.0
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 (*Ctx) ClearCookie ¶
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 (*Ctx) ClientHelloInfo ¶ added in v2.37.0
func (c *Ctx) ClientHelloInfo() *tls.ClientHelloInfo
ClientHelloInfo return CHI from context
func (*Ctx) Context ¶
func (c *Ctx) Context() *fasthttp.RequestCtx
Context returns *fasthttp.RequestCtx that carries a deadline a cancellation signal, and other values across API boundaries.
func (*Ctx) CookieParser ¶ added in v2.50.0
CookieParser is used to bind cookies to a struct
func (*Ctx) Cookies ¶
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 (*Ctx) Download ¶
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 (*Ctx) FormFile ¶
func (c *Ctx) FormFile(key string) (*multipart.FileHeader, error)
FormFile returns the first file by key from a MultipartForm.
func (*Ctx) FormValue ¶
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 (*Ctx) Format ¶
Format performs content-negotiation on the Accept HTTP header. It uses Accepts to select a proper format. If the header is not specified or there is no proper format, text/plain is used.