ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
在 [前面的](https://github.com/kataras/iris/wiki/Host) 章节 我们学习了 `app.Run` 方法的第一个参数,我们将要学习它的第二个参数。 让我们从基础开始。`iris.New` 函数返回 `iris.Application`。应用程序的值可以通过它的 `Configure(...iris.Configurator)` 函数 和 `Run`方法来配置应用。 `app.Run` 方法的第二个可选参数接受一个或者多个 `iris.Configurator`。一个 `iris.Configurator` 只是一个 `func(app *iris.Application)`类型。也可以传递自定义` iris.Configurator` 来修改你的 `*iris.Application` 。 每个核心的 [配置](https://godoc.org/github.com/kataras/iris#Configuration) 的字段都有内置的 `iris.Configurator`, 例如 `iris.WithoutStartupLog`, `iris.WithCharset("UTF-8")`,`iris.WithOptimizations` 和 `iris.WithConfiguration(iris.Configuration{...})` 方法。 每个 “模块” ,例如 iris 的视图引擎,websockets,sessions 和每个中间件都有自己的配置和选项,其中大多数与核心配置分开。 # [配置](https://godoc.org/github.com/kataras/iris#Configuration) 使用 所有 `iris.Configuration` 字段都默认是最常见的用例 。 Iris 在 `app.Run` 方法之前不需要任何配置, 但是如果要在服务器运行之前使用自定义的 `iris.Configurator` ,则可以使用 `app.Configure` 方法,以在那里传递配置。 ``` config := iris.WithConfiguration(iris.Configuration { DisableStartupLog: true, Optimizations: true, Charset: "UTF-8", }) app.Run(iris.Addr(":8080"), config) ``` # 从 [YAML](https://yaml.org/) 中加载配置 使用` iris.YAML("path")`。 文件: iris.yml ``` FireMethodNotAllowed: true DisableBodyConsumptionOnUnmarshal: true TimeFormat: Mon, 01 Jan 2006 15:04:05 GMT Charset: UTF-8 ``` 文件: main.go ``` config := iris.WithConfiguration(iris.YAML("./iris.yml")) app.Run(iris.Addr(":8080"), config) ``` # 从 [TOML](https://github.com/toml-lang/toml) 中加载配置 使用 `iris.TOML("path")`。 文件: iris.tml ``` FireMethodNotAllowed = true DisableBodyConsumptionOnUnmarshal = false TimeFormat = "Mon, 01 Jan 2006 15:04:05 GMT" Charset = "UTF-8" [Other] ServerName = "my fancy iris server" ServerOwner = "admin@example.com" ``` 文件: main.go ``` config := iris.WithConfiguration(iris.TOML("./iris.tml")) app.Run(iris.Addr(":8080"), config) ``` # 使用方法方式 正如我们已经提到的,在 `app.Run` 的第二个参数中,你可以传递任意数量的 `iris.Configurator` 。 Iris 为每个 `iris.Configuration` 的字段提供了相应选项。 ``` app.Run(iris.Addr(":8080"), iris.WithoutInterruptHandler, iris.WithoutServerError(iris.ErrServerClosed), iris.WithoutBodyConsumptionOnUnmarshal, iris.WithoutAutoFireStatusCode, iris.WithOptimizations, iris.WithTimeFormat("Mon, 01 Jan 2006 15:04:05 GMT"), ) ``` 当你想更改某些配置字段时,该选项非常好用。前缀: "With" 或者 "Without",代码编辑器可以毫无阻碍的帮助你浏览所有配置选项。 # 自定义值 ` iris.Configuration` 包含一个名为 `Other map[string]interface{}` 的字段, 该字段接受任何自定义的 `key:value` 选项,因此你可以使用该字段来根据自定义要求传递你的应用期望的特定值。 ``` app.Run(iris.Addr(":8080"), iris.WithOtherValue("ServerName", "my amazing iris server"), iris.WithOtherValue("ServerOwner", "admin@example.com"), ) ``` 可以通过 `app.ConfigurationReadOnly` 访问这些字段。 ``` serverName := app.ConfigurationReadOnly().Other["MyServerName"] serverOwner := app.ConfigurationReadOnly().Other["ServerOwner"] ``` # 从 Context 访问配置 在处理程序中,使用以下命令检索这些字段: ``` ctx.Application().ConfigurationReadOnly() ```