mirror of
https://github.com/kataras/iris.git
synced 2025-01-24 11:11:03 +01:00
7c5d7cae05
Part 2. Former-commit-id: 3ccb7c259e86c0b6e5147d372aa9cff10c1b5bb1
49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
|
|
"gopkg.in/kataras/iris.v6"
|
|
"gopkg.in/kataras/iris.v6/adaptors/httprouter"
|
|
)
|
|
|
|
func main() {
|
|
app := iris.New()
|
|
// output startup banner and error logs on os.Stdout
|
|
app.Adapt(iris.DevLogger())
|
|
// set the router, you can choose gorillamux too
|
|
app.Adapt(httprouter.New())
|
|
|
|
// Custom Render Policy to override or create new content-type render
|
|
// i,e: "text/html" with a prefix,
|
|
// we will just write to the writer and return false
|
|
// to continue to the next contentType-matched renderer if any.
|
|
app.Adapt(iris.RenderPolicy(func(out io.Writer, contentType string, binding interface{}, options ...map[string]interface{}) (bool, error) {
|
|
|
|
if contentType == "text/html" {
|
|
if content, ok := binding.(string); ok {
|
|
out.Write([]byte("<pre>My Custom prefix</pre><br/>" + content))
|
|
}
|
|
|
|
}
|
|
// continue to the next, no error
|
|
// note: if we wanted to stop here we would return true instead of false.
|
|
return false, nil
|
|
}))
|
|
|
|
app.Get("", func(ctx *iris.Context) {
|
|
|
|
// These content-types are not managed by our RenderPolicy:
|
|
// text, binary and html content-types are
|
|
// not rendered via serializers, you have to
|
|
// use the ctx.Render functions instead.
|
|
// so something like this:
|
|
// ctx.Text(iris.StatusOK, "my text content body here!")
|
|
// will NOT work with out custom render policy.
|
|
ctx.Render("text/html",
|
|
"my text content body here!")
|
|
})
|
|
|
|
app.Listen(":8080")
|
|
}
|