Custom HTTP configuration
More than 12 examples about http server configuration can be found at the _examples/http-server folder.
Use http.ListenAndServe()
directly, like this:
func main() {
app := iris.New()
// [...routes]
if err := app.Build(); err!=nil{
panic(err)
}
http.ListenAndServe(":8080", app)
}
Note that you SHOULD call its Build
method manually to build the application and the router before using it as an http.Handler
.
Another example:
func main() {
app := iris.New()
// [...routes]
app.Build()
srv := &http.Server{
Addr: ":8080",
Handler: app,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
srv.ListenAndServe()
}
However, you rarely need an external http.Server
instance with Iris. You can listen using any tcp listener, http server or a custom function via Application.Run
method.
app.Run(iris.Listener(l net.Listener)) // listen using a custom net.Listener
app.Run(iris.Server(srv *http.Server)) // listen using a custom http.Server
app.Run(iris.Addr(addr string)) // the app.Listen is a shortcut of this method.
app.Run(iris.TLS(addr string, certFileOrContents, keyFileOrContents string)) // listen TLS.
app.Run(iris.AutoTLS(addr, domain, email string)) // listen using letsencrypt (see below).
// and any custom function that returns an error:
app.Run(iris.Raw(f func() error))