diff --git a/_examples/README.md b/_examples/README.md index 647e008d..55c7ad8b 100644 --- a/_examples/README.md +++ b/_examples/README.md @@ -259,6 +259,7 @@ Follow the examples below, - [Login showcase - Plus Repository and Service layers](mvc/login) **UPDATED** - [Singleton](mvc/singleton) **NEW** - [Websocket Controller](mvc/websocket) **NEW** +- [Register Middleware](middleware) **NEW** - [Vue.js Todo MVC](tutorial/vuejs-todo-mvc) **NEW** ### Subdomains diff --git a/_examples/mvc/README.md b/_examples/mvc/README.md index 6f10cbff..68733e39 100644 --- a/_examples/mvc/README.md +++ b/_examples/mvc/README.md @@ -141,5 +141,6 @@ If you're new to back-end web development read about the MVC architectural patte - [Login showcase - Plus Repository and Service layers](login) **UPDATED** - [Singleton](singleton) **NEW** - [Websocket Controller](websocket) **NEW** +- [Register Middleware](middleware) **NEW** Folder structure guidelines can be found at the [_examples/#structuring](https://github.com/kataras/iris/tree/master/_examples/#structuring) section. \ No newline at end of file diff --git a/_examples/mvc/middleware/main.go b/_examples/mvc/middleware/main.go new file mode 100644 index 00000000..43b36c38 --- /dev/null +++ b/_examples/mvc/middleware/main.go @@ -0,0 +1,45 @@ +// Package main shows how you can add middleware to an mvc Application, simply +// by using its `Router` which is a sub router(an iris.Party) of the main iris app. +package main + +import ( + "time" + + "github.com/kataras/iris" + "github.com/kataras/iris/cache" + "github.com/kataras/iris/mvc" +) + +var cacheHandler = cache.Handler(10 * time.Second) + +func main() { + app := iris.New() + mvc.Configure(app, configure) + + // http://localhost:8080 + // http://localhost:8080/other + // + // refresh every 10 second and you'll see different time output. + app.Run(iris.Addr(":8080")) +} + +func configure(m *mvc.Application) { + m.Router.Use(cacheHandler) + m.Handle(&exampleController{ + timeFormat: "Mon, Jan 02 2006 15:04:05", + }) +} + +type exampleController struct { + timeFormat string +} + +func (c *exampleController) Get() string { + now := time.Now().Format(c.timeFormat) + return "last time executed without cache: " + now +} + +func (c *exampleController) GetOther() string { + now := time.Now().Format(c.timeFormat) + return "/other: " + now +} diff --git a/_examples/mvc/cache/main.go b/_examples/mvc/middleware/per-method/main.go similarity index 100% rename from _examples/mvc/cache/main.go rename to _examples/mvc/middleware/per-method/main.go