📦 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",
})
// ...
配置字段
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
AppName | string | 这允许为应用程序设置名称 | "" |
BodyLimit | int | 设置请求正文的最大允许大小,如果大小超过配置的限制,它会发送 413 - 请求实体过大 响应。 | 4 * 1024 * 1024 |
CaseSensitive | bool | 启用后,/Foo 和 /foo 是不同的路由。禁用后,/Foo 和 /foo 被视为相同。 | false |
ColorScheme | Colors | 你可以定义自定义颜色方案。它们将用于启动消息、路由列表和一些中间件。 | DefaultColors |
CompressedFileSuffix | string | 为原始文件名添加后缀,并尝试以新文件名保存压缩后的文件。 | ".fiber.gz" |
Concurrency | int | 最大并发连接数。 | 256 * 1024 |
DisableDefaultContentType | bool | 设置为 true 时,会导致响应中排除默认的 Content-Type 头。 | false |
DisableDefaultDate | bool | 设置为 true 时,会导致响应中排除默认的 date 头。 | false |
DisableHeaderNormalizing | bool | 默认情况下,所有头名称都会被规范化:conteNT-tYPE -> Content-Type | false |
DisableKeepalive | bool | 禁用 keep-alive 连接,服务器在向客户端发送第一个响应后将关闭传入连接 | false |
DisablePreParseMultipartForm | bool | 如果设置为 true,将不会预解析 Multipart Form 数据。此选项对于希望将多部分表单数据视为二进制 blob 或选择何时解析数据的服务器很有用。 | false |
DisableStartupMessage | bool | 设置为 true 时,将不会打印调试信息 | false |
ETag | bool | 启用或禁用 ETag 头生成,因为弱标签和强标签都使用相同的哈希方法 (CRC-32) 生成。启用时,弱 ETag 是默认值。 | false |
EnableIPValidation | bool | 如果设置为 true,c.IP() 和 c.IPs() 在返回 IP 地址之前会对其进行验证。此外,c.IP() 将仅返回第一个有效的 IP,而不是可能由逗号分隔的原始头值字符串。警告:进行此验证会产生少量性能开销。如果速度是你唯一关心的问题,并且你的应用程序位于已经验证此头的受信任代理后面,则保持禁用状态。 | false |
EnablePrintRoutes | bool | EnablePrintRoutes 启用打印所有路由及其方法、路径、名称和处理程序。 | false |
EnableSplittingOnParsers | bool | 设置为 true 时,EnableSplittingOnParsers 会按逗号分割查询/正文/头部的参数。 例如,你可以使用它来解析查询参数中的多个值,如下所示: /api?foo=bar,baz == foo[]=bar&foo[]=baz | false |
EnableTrustedProxyCheck | bool | 设置为 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,并且 RemoteIP 在 TrustedProxies 列表中,则 c.Protocol() 、c.IP() 和 c.Hostname() 将具有与 EnableTrustedProxyCheck 禁用时相同的行为。如果 RemoteIP 不在列表中,则当应用程序处理 tls 连接时,c.Protocol() 将返回 https,否则返回 http;c.IP() 将从 fasthttp 上下文返回 RemoteIP();c.Hostname() 将返回 fasthttp.Request.URI().Host() 。 | false |
ErrorHandler | ErrorHandler | ErrorHandler 在 fiber.Handler 返回错误时执行。挂载的 fiber 错误处理程序由顶级应用程序保留,并应用于与前缀相关的请求。 | DefaultErrorHandler |
GETOnly | bool | 如果设置为 true,则拒绝所有非 GET 请求。此选项作为仅接受 GET 请求的服务器的抗 DoS 保护很有用。如果设置了 GETOnly,请求大小将受 ReadBufferSize 限制。 | false |
IdleTimeout | time.Duration | 启用 keep-alive 时等待下一个请求的最大时间。如果 IdleTimeout 为零,则使用 ReadTimeout 的值。 | nil |
Immutable | bool | 启用后,上下文方法返回的所有值都是不可变的。默认情况下,它们在从处理程序返回之前有效;请参阅 issue #185。 | false |
JSONDecoder | utils.JSONUnmarshal | 允许灵活使用其他 json 库进行解码。 | json.Unmarshal |
JSONEncoder | utils.JSONMarshal | 允许灵活使用其他 json 库进行编码。 | json.Marshal |
Network | string | 已知网络包括 "tcp", "tcp4" (仅 IPv4), "tcp6" (仅 IPv6) 警告:当 prefork 设置为 true 时,只能选择 "tcp4" 和 "tcp6"。 | NetworkTCP4 |
PassLocalsToViews | bool | PassLocalsToViews 允许将 fiber.Ctx 上设置的本地变量传递给模板引擎。请参阅我们的 模板中间件 以了解支持的引擎。 | false |
Prefork | bool | 启用 SO_REUSEPORT 套接字选项。这将生成多个 Go 进程监听同一端口。了解更多关于 socket sharding 的信息。注意:如果启用,应用程序需要通过 shell 运行,因为 prefork 模式会设置环境变量。如果你使用 Docker,请确保应用程序通过 CMD ./app 或 CMD ["sh", "-c", "/app"] 运行。更多信息,请参阅 此 issue 评论。 | false |
ProxyHeader | string | 这将使 c.IP() 返回给定头键的值。默认情况下,c.IP() 将返回 TCP 连接的远程 IP,如果你在负载均衡器后面,例如 X-Forwarded-*,此属性可能很有用。 | "" |
ReadBufferSize | int | 每个连接用于读取请求的缓冲区大小。这也限制了最大头部大小。如果你的客户端发送数 KB 的 RequestURIs 和/或数 KB 的头部(例如,大的 cookie),请增加此缓冲区。 | 4096 |
ReadTimeout | time.Duration | 允许读取整个请求(包括正文)的时间。默认超时是无限的。 | nil |
RequestMethods | []string | RequestMethods 提供了对 HTTP 方法的定制能力。你可以根据需要添加/删除方法。 | DefaultMethods |
ServerHeader | string | 使用给定值启用 Server HTTP 头。 | "" |
StreamRequestBody | bool | StreamRequestBody 启用请求正文流,并且当给定的正文大于当前限制时,会更快地调用处理程序。 | false |
StrictRouting | bool | 启用后,路由器将 /foo 和 /foo/ 视为不同。否则,路由器将 /foo 和 /foo/ 视为相同。 | false |
TrustedProxies | []string | 包含受信任的代理 IP 列表。请参阅 EnableTrustedProxyCheck 文档。它可以接受 IP 或 IP 范围地址。如果给定 IP 范围,它将遍历所有可能的地址。 | []string*__* |
UnescapePath | bool | 在为上下文设置路径之前,将路由中所有编码的字符转换回来,以便路由也能处理 URL 编码的特殊字符 | false |
Views | Views | Views 是包装 Render 函数的接口。请参阅我们的 模板中间件 以了解支持的引擎。 | nil |
ViewsLayout | string | Views Layout 是所有模板渲染的全局布局,直到在 Render 函数中被覆盖。请参阅我们的 模板中间件 以了解支持的引擎。 | "" |
WriteBufferSize | int | 每个连接用于写入响应的缓冲区大小。 | 4096 |
WriteTimeout | time.Duration | 响应写入超时前的最大持续时间。默认超时是无限的。 | nil |
XMLEncoder | utils.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")
}
// ...