跳到主要内容
版本: v2.x

📦 Fiber

新建

此方法创建一个新的名为 App 的实例。创建新实例时可以传递可选的 配置

签名
func New(config ...Config) *App
示例
// Default config
app := fiber.New()

// ...

配置

创建新的 Fiber 实例时,可以传递可选的配置。

示例
// Custom config
app := fiber.New(fiber.Config{
Prefork: true,
CaseSensitive: true,
StrictRouting: true,
ServerHeader: "Fiber",
AppName: "Test App v1.0.1",
})

// ...

配置字段

属性类型描述默认值
AppNamestring这允许为应用程序设置名称""
BodyLimitint设置请求正文的最大允许大小,如果大小超过配置的限制,它会发送 413 - 请求实体过大 响应。4 * 1024 * 1024
CaseSensitivebool启用后,/Foo/foo 是不同的路由。禁用后,/Foo/foo 被视为相同。false
ColorSchemeColors你可以定义自定义颜色方案。它们将用于启动消息、路由列表和一些中间件。DefaultColors
CompressedFileSuffixstring为原始文件名添加后缀,并尝试以新文件名保存压缩后的文件。".fiber.gz"
Concurrencyint最大并发连接数。256 * 1024
DisableDefaultContentTypebool设置为 true 时,会导致响应中排除默认的 Content-Type 头。false
DisableDefaultDatebool设置为 true 时,会导致响应中排除默认的 date 头。false
DisableHeaderNormalizingbool默认情况下,所有头名称都会被规范化:conteNT-tYPE -> Content-Typefalse
DisableKeepalivebool禁用 keep-alive 连接,服务器在向客户端发送第一个响应后将关闭传入连接false
DisablePreParseMultipartFormbool如果设置为 true,将不会预解析 Multipart Form 数据。此选项对于希望将多部分表单数据视为二进制 blob 或选择何时解析数据的服务器很有用。false
DisableStartupMessagebool设置为 true 时,将不会打印调试信息false
ETagbool启用或禁用 ETag 头生成,因为弱标签和强标签都使用相同的哈希方法 (CRC-32) 生成。启用时,弱 ETag 是默认值。false
EnableIPValidationbool如果设置为 true,c.IP()c.IPs() 在返回 IP 地址之前会对其进行验证。此外,c.IP() 将仅返回第一个有效的 IP,而不是可能由逗号分隔的原始头值字符串。

警告:进行此验证会产生少量性能开销。如果速度是你唯一关心的问题,并且你的应用程序位于已经验证此头的受信任代理后面,则保持禁用状态。
false
EnablePrintRoutesboolEnablePrintRoutes 启用打印所有路由及其方法、路径、名称和处理程序。false
EnableSplittingOnParsersbool设置为 true 时,EnableSplittingOnParsers 会按逗号分割查询/正文/头部的参数。

例如,你可以使用它来解析查询参数中的多个值,如下所示:/api?foo=bar,baz == foo[]=bar&foo[]=baz
false
EnableTrustedProxyCheckbool设置为 true 时,Fiber 将使用 TrustedProxies 列表检查代理是否受信任。

默认情况下,c.Protocol() 将从 X-Forwarded-Proto、X-Forwarded-Protocol、X-Forwarded-Ssl 或 X-Url-Scheme 头中获取值,c.IP() 将从 ProxyHeader 头中获取值,c.Hostname() 将从 X-Forwarded-Host 头中获取值。
如果 EnableTrustedProxyCheck 为 true,并且 RemoteIPTrustedProxies 列表中,则 c.Protocol()c.IP()c.Hostname() 将具有与 EnableTrustedProxyCheck 禁用时相同的行为。如果 RemoteIP 不在列表中,则当应用程序处理 tls 连接时,c.Protocol() 将返回 https,否则返回 http;c.IP() 将从 fasthttp 上下文返回 RemoteIP();c.Hostname() 将返回 fasthttp.Request.URI().Host()
false
ErrorHandlerErrorHandlerErrorHandler 在 fiber.Handler 返回错误时执行。挂载的 fiber 错误处理程序由顶级应用程序保留,并应用于与前缀相关的请求。DefaultErrorHandler
GETOnlybool如果设置为 true,则拒绝所有非 GET 请求。此选项作为仅接受 GET 请求的服务器的抗 DoS 保护很有用。如果设置了 GETOnly,请求大小将受 ReadBufferSize 限制。false
IdleTimeouttime.Duration启用 keep-alive 时等待下一个请求的最大时间。如果 IdleTimeout 为零,则使用 ReadTimeout 的值。nil
Immutablebool启用后,上下文方法返回的所有值都是不可变的。默认情况下,它们在从处理程序返回之前有效;请参阅 issue #185false
JSONDecoderutils.JSONUnmarshal允许灵活使用其他 json 库进行解码。json.Unmarshal
JSONEncoderutils.JSONMarshal允许灵活使用其他 json 库进行编码。json.Marshal
Networkstring已知网络包括 "tcp", "tcp4" (仅 IPv4), "tcp6" (仅 IPv6)

警告:当 prefork 设置为 true 时,只能选择 "tcp4" 和 "tcp6"。
NetworkTCP4
PassLocalsToViewsboolPassLocalsToViews 允许将 fiber.Ctx 上设置的本地变量传递给模板引擎。请参阅我们的 模板中间件 以了解支持的引擎。false
Preforkbool启用 SO_REUSEPORT 套接字选项。这将生成多个 Go 进程监听同一端口。了解更多关于 socket sharding 的信息。注意:如果启用,应用程序需要通过 shell 运行,因为 prefork 模式会设置环境变量。如果你使用 Docker,请确保应用程序通过 CMD ./appCMD ["sh", "-c", "/app"] 运行。更多信息,请参阅 issue 评论。false
ProxyHeaderstring这将使 c.IP() 返回给定头键的值。默认情况下,c.IP() 将返回 TCP 连接的远程 IP,如果你在负载均衡器后面,例如 X-Forwarded-*,此属性可能很有用。""
ReadBufferSizeint每个连接用于读取请求的缓冲区大小。这也限制了最大头部大小。如果你的客户端发送数 KB 的 RequestURIs 和/或数 KB 的头部(例如,大的 cookie),请增加此缓冲区。4096
ReadTimeouttime.Duration允许读取整个请求(包括正文)的时间。默认超时是无限的。nil
RequestMethods[]stringRequestMethods 提供了对 HTTP 方法的定制能力。你可以根据需要添加/删除方法。DefaultMethods
ServerHeaderstring使用给定值启用 Server HTTP 头。""
StreamRequestBodyboolStreamRequestBody 启用请求正文流,并且当给定的正文大于当前限制时,会更快地调用处理程序。false
StrictRoutingbool启用后,路由器将 /foo/foo/ 视为不同。否则,路由器将 /foo/foo/ 视为相同。false
TrustedProxies[]string包含受信任的代理 IP 列表。请参阅 EnableTrustedProxyCheck 文档。

它可以接受 IP 或 IP 范围地址。如果给定 IP 范围,它将遍历所有可能的地址。
[]string*__*
UnescapePathbool在为上下文设置路径之前,将路由中所有编码的字符转换回来,以便路由也能处理 URL 编码的特殊字符false
ViewsViewsViews 是包装 Render 函数的接口。请参阅我们的 模板中间件 以了解支持的引擎。nil
ViewsLayoutstringViews Layout 是所有模板渲染的全局布局,直到在 Render 函数中被覆盖。请参阅我们的 模板中间件 以了解支持的引擎。""
WriteBufferSizeint每个连接用于写入响应的缓冲区大小。4096
WriteTimeouttime.Duration响应写入超时前的最大持续时间。默认超时是无限的。nil
XMLEncoderutils.XMLMarshal允许灵活使用其他 XML 库进行编码。xml.Marshal

新建错误

NewError 创建一个新的 HTTPError 实例,带有可选的消息。

签名
func NewError(code int, message ...string) *Error
示例
app.Get("/", func(c *fiber.Ctx) error {
return fiber.NewError(782, "Custom error message")
})

是否为子进程

IsChild 判断当前进程是否是 Prefork 的结果。

签名
func IsChild() bool
示例
// Prefork will spawn child processes
app := fiber.New(fiber.Config{
Prefork: true,
})

if !fiber.IsChild() {
fmt.Println("I'm the parent process")
} else {
fmt.Println("I'm a child process")
}

// ...