diff --git a/_examples/README.md b/_examples/README.md index c22d6ce5..f14368e1 100644 --- a/_examples/README.md +++ b/_examples/README.md @@ -258,6 +258,10 @@ You can serve [quicktemplate](https://github.com/valyala/quicktemplate) files to https://github.com/kataras/iris/tree/master/middleware#third-party-handlers +### Automated API Documentation + +- [yaag](apidoc/yaag/main.go) + ### Testing The `httptest` package is your way for end-to-end HTTP testing, it uses the httpexpect library created by our friend, [gavv](https://github.com/gavv). diff --git a/_examples/apidoc/yaag/main.go b/_examples/apidoc/yaag/main.go new file mode 100644 index 00000000..c664ccc3 --- /dev/null +++ b/_examples/apidoc/yaag/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "github.com/kataras/iris" + "github.com/kataras/iris/context" + + "github.com/betacraft/yaag/irisyaag" + "github.com/betacraft/yaag/yaag" +) + +/* + go get github.com/betacraft/yaag/... +*/ + +type myXML struct { + Result string `xml:"result"` +} + +func main() { + app := iris.New() + + yaag.Init(&yaag.Config{ // <- IMPORTANT, init the middleware. + On: true, + DocTitle: "Iris", + DocPath: "apidoc.html", + BaseUrls: map[string]string{"Production": "", "Staging": ""}, + }) + app.Use(irisyaag.New()) // <- IMPORTANT, register the middleware. + + app.Get("/json", func(ctx context.Context) { + ctx.JSON(context.Map{"result": "Hello World!"}) + }) + + app.Get("/plain", func(ctx context.Context) { + ctx.Text("Hello World!") + }) + + app.Get("/xml", func(ctx context.Context) { + ctx.XML(myXML{Result: "Hello World!"}) + }) + + app.Get("/complex", func(ctx context.Context) { + value := ctx.URLParam("key") + ctx.JSON(context.Map{"value": value}) + }) + + // Run our HTTP Server. + // + // Documentation of "yaag" doesn't note the follow, but in Iris we are careful on what + // we provide to you. + // + // Each incoming request results on re-generation and update of the "apidoc.html" file. + // Recommentation: + // Write tests that calls those handlers, save the generated "apidoc.html". + // Turn off the yaag middleware when in production. + // + // Example usage: + // Visit all paths and open the generated "apidoc.html" file to see the API's automated docs. + app.Run(iris.Addr(":8080")) +} diff --git a/mvc/controller.go b/mvc/controller.go index 1fe53670..0df81b5b 100644 --- a/mvc/controller.go +++ b/mvc/controller.go @@ -115,7 +115,7 @@ type Controller struct { Data map[string]interface{} ContentType string - Text string // or Text + Text string // response as string // give access to the request context itself. Ctx context.Context