package main import ( "encoding/xml" "gopkg.in/kataras/iris.v6" "gopkg.in/kataras/iris.v6/adaptors/gorillamux" "gopkg.in/kataras/iris.v6/adaptors/view" ) // ExampleXML just a test struct to view represents xml content-type type ExampleXML struct { XMLName xml.Name `xml:"example"` One string `xml:"one,attr"` Two string `xml:"two,attr"` } func main() { app := iris.New() app.Adapt(iris.DevLogger()) app.Adapt(gorillamux.New()) app.Get("/data", func(ctx *iris.Context) { ctx.Data(iris.StatusOK, []byte("Some binary data here.")) }) app.Get("/text", func(ctx *iris.Context) { ctx.Text(iris.StatusOK, "Plain text here") }) app.Get("/json", func(ctx *iris.Context) { ctx.JSON(iris.StatusOK, map[string]string{"hello": "json"}) // or myjsonStruct{hello:"json} }) app.Get("/jsonp", func(ctx *iris.Context) { ctx.JSONP(iris.StatusOK, "callbackName", map[string]string{"hello": "jsonp"}) }) app.Get("/xml", func(ctx *iris.Context) { ctx.XML(iris.StatusOK, ExampleXML{One: "hello", Two: "xml"}) // or iris.Map{"One":"hello"...} }) app.Get("/markdown", func(ctx *iris.Context) { ctx.Markdown(iris.StatusOK, "# Hello Dynamic Markdown Iris") }) app.Adapt(view.HTML("./templates", ".html")) app.Get("/template", func(ctx *iris.Context) { ctx.MustRender( "hi.html", // the file name of the template relative to the './templates' iris.Map{"Name": "Iris"}, // the .Name inside the ./templates/hi.html iris.Map{"gzip": false}, // enable gzip for big files ) }) // ------ first customization without even the need of *Context or a Handler-------- // // Custom new content-/type: // app.Adapt(iris.RenderPolicy(func(out io.Writer, name string, binding interface{}, options ...map[string]interface{}) (error, bool) { // if name == "customcontent-type" { // // // some very advanced things here: // out.Write([]byte(binding.(string))) // return nil, true // } // return nil, false // })) // // app.Get("/custom", func(ctx *iris.Context) { // ctx.RenderWithStatus(iris.StatusOK, // or MustRender // "customcontent-type", // "my custom content here!", // ) // }) // // ---- second ----------------------------------------------------------------------- // // Override the defaults (the json,xml,jsonp,text,data and so on), an existing content-type: // app.Adapt(iris.RenderPolicy(func(out io.Writer, name string, binding interface{}, options ...map[string]interface{}) (error, bool) { // if name == "text/plain" { // out.Write([]byte("From the custom text/plain renderer: " + binding.(string))) // return nil, true // } // // return nil, false // })) // // the context.Text's behaviors was changed now by your custom renderer. // app.Listen(":8080") }