From b69aebb14acc7d8122e7dee1c135ba25493c749f Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Mon, 1 Jan 2018 22:08:14 +0200 Subject: [PATCH] add a simple example about registering middleware(s) to an mvc Application Former-commit-id: 59da5e241e1488b6b39d2ec0e72c45ad2cc7d901 --- _examples/README.md | 1 + _examples/mvc/README.md | 1 + _examples/mvc/middleware/main.go | 45 +++++++++++++++++++ .../{cache => middleware/per-method}/main.go | 0 4 files changed, 47 insertions(+) create mode 100644 _examples/mvc/middleware/main.go rename _examples/mvc/{cache => middleware/per-method}/main.go (100%) 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