Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 151.3MB ·虚拟内存 1437.8MB
欢迎来到 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 ...