Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 69.6MB ·虚拟内存 1299.5MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
iris 所有的配置项都有默认值,所有默认配置都会在当使用 iris.New()
时设置。
配置项在监听函数调用之前是无效的,它需要作为 iris.Application.Run
函数的参数传入。
Run
配置信息参数有多种形式: Configuration结构体、预定义选项、TOML配置文件、YAML配置文件等。
package main import ( "github.com/kataras/iris" ) func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.HTML("<h1>Hello World</h1>") }) // [...] // 改变配置 app.Run(iris.Addr(":8000"), iris.WithConfiguration(iris.Configuration{ DisableStartupLog: false, DisableInterruptHandler: false, DisablePathCorrection: false, EnablePathEscape: false, FireMethodNotAllowed: false, DisableBodyConsumptionOnUnmarshal: false, DisableAutoFireStatusCode: false, TimeFormat: "Mon, 02 Jan 2006 15:04:05 GMT", Charset: "UTF-8", })) }
package main import ( "github.com/kataras/iris" ) func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.HTML("<b>Hello!</b>") }) // [...] // 当你想更变一些配置项的时候这样做。 // 前缀:"With",代码比较器将帮助你查看所有可用配置 app.Run(iris.Addr(":8080"), iris.WithoutStartupLog, iris.WithCharset("UTF-8")) // or before run: // app.Configure(iris.WithoutStartupLog, iris.WithCharset("UTF-8")) // app.Run(iris.Addr(":8080")) }
DisablePathCorrection = false EnablePathEscape = false FireMethodNotAllowed = true DisableBodyConsumptionOnUnmarshal = false TimeFormat = "Mon, 01 Jan 2006 15:04:05 GMT" Charset = "UTF-8" [Other] MyServerName = "iris"
package main import ( "github.com/kataras/iris" ) func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.HTML("<b>Hello!</b>") }) // [...] // 当你有两份不同的配置时这样使用 app.Run(iris.Addr(":8080"), iris.WithConfiguration(iris.TOML("./configs/iris.tml"))) }
DisablePathCorrection: false EnablePathEscape: false FireMethodNotAllowed: true DisableBodyConsumptionOnUnmarshal: true TimeFormat: Mon, 01 Jan 2006 15:04:05 GMT Charset: UTF-8
package main import ( "github.com/kataras/iris" ) func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.HTML("<b>Hello!</b>") }) // [...] app.Run(iris.Addr(":8080"), iris.WithConfiguration(iris.YAML("./configs/iris.yml"))) }
// WithoutServerError 将会忽略从主应用的 `Run` 函数返回的 "errors" // // 用法: // err := app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed)) // 将返回 nil ,如果服务器的错误是 `http/iris#ErrServerClosed` // // 查看 `Configuration#IgnoreServerErrors []string` 。 // // 例子: https://github.com/kataras/iris/tree/master/_examples/http-listening/listen-addr/omit-server-errors func WithoutServerError(errors ...error) Configurator // WithoutStartupLog 将关闭服务打开时一次性发送到终端的信息 var WithoutStartupLog // WithoutInterruptHandler 将会在按 control/cmd+C 时禁用自动平滑服务关闭功能。 var WithoutInterruptHandler // WithoutPathCorrection 禁用 PathCorrection 设置。 // // 查看 `Configuration`。 var WithoutPathCorrection // WithoutBodyConsumptionOnUnmarshal 禁用 BodyConsumptionOnUnmarshal 设置。 // // 查看 `Configuration`。 var WithoutBodyConsumptionOnUnmarshal // WithoutAutoFireStatusCode 禁用 AutoFireStatusCode 设置。 // // 查看 `Configuration`. var WithoutAutoFireStatusCode // WithPathEscape 开启 PathEscape 设置. // // 查看 `Configuration`. var WithPathEscape // WithOptimizations 会强制应用进行最佳性能优化。 // // 查看 `Configuration`。 var WithOptimizations // WithFireMethodNotAllowed 开启 FireMethodNotAllowed 设置。 // // 参考 `Configuration`。 var WithFireMethodNotAllowed // WithTimeFormat 设置 TimeFormat。 // // 参考 `Configuration`。 func WithTimeFormat(timeformat string) Configurator // WithCharset 设置 Charset 。 // // 参考 `Configuration`. func WithCharset(charset string) Configurator // WithRemoteAddrHeader 将会允许现有的或者添加新的请求头用于鉴别客户端真实IP。 // // 现有的头部是: // "X-Real-Ip": false, // "X-Forwarded-For": false, // "CF-Connecting-IP": false // // 更多请看 `context.RemoteAddr()` 。 func WithRemoteAddrHeader(headerName string) Configurator // WithoutRemoteAddrHeader 禁用现有的用于鉴别客户端真是IP的头。 // 现有的头部是: // "X-Real-Ip": false, // "X-Forwarded-For": false, // "CF-Connecting-IP": false // // 更多请看 `context.RemoteAddr()`。 func WithoutRemoteAddrHeader(headerName string) Configurator // WithOtherValue 添加用于其他设置。 // 查看 `Configuration`. func WithOtherValue(key string, val interface{}) Configurator
使用 Configurator
开发者可以轻松地模块化他们的应用程序。
示例代码:
// 文件 counter/counter.go package counter import ( "time" "github.com/kataras/iris" "github.com/kataras/iris/core/host" ) func Configurator(app *iris.Application) { counterValue := 0 go func() { ticker := time.NewTicker(time.Second) for range ticker.C { counterValue++ } app.ConfigureHost(func(h *host.Supervisor) { // <- 这里: 很重要 h.RegisterOnShutdown(func() { ticker.Stop() }) }) }() app.Get("/counter", func(ctx iris.Context) { ctx.Writef("Counter value = %d", counterValue) }) }
// 文件: main.go package main import ( "counter" "github.com/kataras/iris" ) func main() { app := iris.New() app.Configure(counter.Configurator) app.Run(iris.Addr(":8080")) }
1. HandlerHandler 是一个用于处理 HTTP 请求的函数。我们可以通过 Context.Request() 获得的请求数据,然后把响应头和数据写入 Context.ResponseWri ...