add wiki like the old times

kataras 2017-11-08 16:06:13 +02:00
parent e99f359c22
commit 413d0ef5d4
No known key found for this signature in database
GPG Key ID: 6C6425A6486335BD
7 changed files with 632 additions and 138 deletions

43
Features.md Normal file

@ -0,0 +1,43 @@
# 🔥 Hot Features
- Focus on high performance
- Easy Fluent API
- Highly customizable
- Robust routing and middleware ecosystem
* Build RESTful APIs with iris unique expressionist path interpreter
* Dynamic path parameterized or wildcard routes are not conflict with static routes
* Remove trailing slash from the URL with option to redirect
* Virtual hosts and subdomains made easy
* Group API's and static or even dynamic subdomains
* `net/http` and `negroni-like` handlers are compatible via `iris.FromStd`
* Register custom handlers for any HTTP error
* Transactions and rollback when you need it
* Cache the response when you need it
* A single function to serve your embedded assets, always compatible with `go-bindata`
* HTTP to HTTPS
* HTTP to HTTPS WWW
* [learn the reasons that differ from what you've seen so far](https://github.com/kataras/iris/tree/master/_examples/#routing-grouping-dynamic-path-parameters-macros-and-custom-context)
* MVC **NEW**
- Context
* Highly scalable rich content render (Markdown, JSON, JSONP, XML...)
* Body binders and handy functions to send HTTP responses
* Limit request body
* Serve static resources or embedded assets
* Localization i18N
* Compression (Gzip is built'n)
- Authentication
* Basic Authentication
* OAuth, OAuth2 supporting 27+ popular websites
* JWT
- Server
* Automatically install and serve certificates from https://letsencrypt.org when serving via TLS
* Gracefully shutdown by-default
* Register on shutdown, error or interrupt events
* Attach more than one server, fully compatible with `net/http#Server`
- View system: supporting 5 template engines. Fully compatible with `html/template`
- HTTP Sessions library [you can still use your favorite if you want to]
- Websocket library, its API similar to socket.io [you can still use your favorite if you want to]
- Hot Reload on source code changes[*](https://github.com/kataras/rizla)
- Typescript integration + Web IDE
Iris is one of the most featured web frameworks out there, not all features are here and don't expect from me to write down all of their usages in this gitbook, if you see that I'm missing something please make a PR to the [book repository](https://github.com/kataras/build-a-better-web-together).

229
Home.md

@ -1,56 +1,195 @@
Installation
------------
The only requirement is Go 1.6
The only requirement is [Go 1.9](https://golang.org/dl)
`$ go get -u github.com/kataras/iris`
```bash
$ go get -u github.com/kataras/iris/...
```
>If you are connected to the Internet through China [click here](https://kataras.gitbooks.io/iris/content/install.html)
Iris takes advantage of the [vendor directory](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo) feature. You get truly reproducible builds, as this method guards against upstream renames and deletes.
Getting Started
------------
```go
package main
import "github.com/kataras/iris"
func main() {
app := iris.New()
// Load all templates from the "./views" folder
// where extension is ".html" and parse them
// using the standard `html/template` package.
app.RegisterView(iris.HTML("./views", ".html"))
// Method: GET
// Resource: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Bind: {{.message}} with "Hello world!"
ctx.ViewData("message", "Hello world!")
// Render template file: ./views/hello.html
ctx.View("hello.html")
})
// Method: GET
// Resource: http://localhost:8080/user/42
//
// Need to use a custom regexp instead?
// Easy;
// Just mark the parameter's type to 'string'
// which accepts anything and make use of
// its `regexp` macro function, i.e:
// app.Get("/user/{id:string regexp(^[0-9]+$)}")
app.Get("/user/{id:long}", func(ctx iris.Context) {
userID, _ := ctx.Params().GetInt64("id")
ctx.Writef("User ID: %d", userID)
})
// Start the server using a network address.
app.Run(iris.Addr(":8080"))
}
```
> Learn more about path parameter's types by clicking [here](https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/main.go#L31)
```html
<!-- file: ./views/hello.html -->
<html>
<head>
<title>Hello Page</title>
</head>
<body>
<h1>{{.message}}</h1>
</body>
</html>
```
![overview screen](https://github.com/kataras/build-a-better-web-together/raw/master/overview_screen_1.png)
> Wanna re-start your app automatically when source code changes happens? Install the [rizla](https://github.com/kataras/rizla) tool and execute `rizla main.go` instead of `go run main.go`.
Table of Contents
------------
<a href="https://www.gitbook.com/book/kataras/iris/details"><img align="right" width="185" src="http://iris-go.com/assets/book/cover_1.png"></a>
<a href ="https://iris-go.com/v8/recipe"> <img align="right" alt="Book cover" src="https://raw.githubusercontent.com/kataras/build-a-better-web-together/master/cover.jpg" width="300" /></a>
* [Hi](https://kataras.gitbooks.io/iris/content/hi.html)
* [Transport Layer Security](https://kataras.gitbooks.io/iris/content/tls.html)
* [Handlers](https://kataras.gitbooks.io/iris/content/handlers.html)
* [Using Handlers](https://kataras.gitbooks.io/iris/content/using-handlers.html)
* [Using HandlerFuncs](https://kataras.gitbooks.io/iris/content/using-handlerfuncs.html)
* [Using native http.Handler](https://kataras.gitbooks.io/iris/content/using-native-httphandler.html)
* [Using native http.Handler via iris.ToHandlerFunc()](https://kataras.gitbooks.io/iris/content/using-native-httphandler-via-tohandlerfunc.html)
* [Middlewares](https://kataras.gitbooks.io/iris/content/middlewares.html)
* [API](https://kataras.gitbooks.io/iris/content/api.html)
* [Declaration](https://kataras.gitbooks.io/iris/content/declaration.html)
* [Configuration](https://kataras.gitbooks.io/iris/content/configuration.html)
* [Party](https://kataras.gitbooks.io/iris/content/party.html)
* [Subdomains](https://kataras.gitbooks.io/iris/content/subdomains.html)
* [Named Parameters](https://kataras.gitbooks.io/iris/content/named-parameters.html)
* [Static files](https://kataras.gitbooks.io/iris/content/static-files.html)
* [Send files](https://kataras.gitbooks.io/iris/content/send-files.html)
* [Render](https://kataras.gitbooks.io/iris/content/render.html)
* [REST](https://kataras.gitbooks.io/iris/content/render_rest.html)
* [Templates](https://kataras.gitbooks.io/iris/content/render_templates.html)
* [Gzip](https://kataras.gitbooks.io/iris/content/gzip.html)
* [Streaming](https://kataras.gitbooks.io/iris/content/streaming.html)
* [Cookies](https://kataras.gitbooks.io/iris/content/cookies.html)
* [Flash messages](https://kataras.gitbooks.io/iris/content/flashmessages.html)
* [Body binder](https://kataras.gitbooks.io/iris/content/request-body-bind.html)
* [Custom HTTP Errors](https://kataras.gitbooks.io/iris/content/custom-http-errors.html)
* [Context](https://kataras.gitbooks.io/iris/content/context.html)
* [Logger](https://kataras.gitbooks.io/iris/content/logger.html)
* [HTTP access control](https://kataras.gitbooks.io/iris/content/middleware-cors.html)
* [Secure](https://kataras.gitbooks.io/iris/content/middleware-secure.html)
* [Sessions](https://kataras.gitbooks.io/iris/content/package-sessions.html)
* [Websockets](https://kataras.gitbooks.io/iris/content/package-websocket.html)
* [Graceful](https://kataras.gitbooks.io/iris/content/package-graceful.html)
* [Recovery](https://kataras.gitbooks.io/iris/content/middleware-recovery.html)
* [Plugins](https://kataras.gitbooks.io/iris/content/plugins.html)
* [Internationalization and Localization](https://kataras.gitbooks.io/iris/content/middleware-internationalization-and-localization.html)
* [Easy Typescript](https://kataras.gitbooks.io/iris/content/plugin-typescript.html)
* [Browser based Editor](https://kataras.gitbooks.io/iris/content/plugin-editor.html)
* [Routes info](https://kataras.gitbooks.io/iris/content/plugin-routesinfo.html)
* [Control panel](https://kataras.gitbooks.io/iris/content/plugin-iriscontrol.html)
* [Examples](https://github.com/iris-contrib/examples)
* [Why a new web framework](Why.md)
* [Features](Features.md)
* [Versioning](Versioning.md)
* [Overview](https://github.com/kataras/iris/tree/master/_examples/#overview)
* [Hello world!](https://github.com/kataras/iris/blob/master/_examples/hello-world/main.go)
* [Glimpse](https://github.com/kataras/iris/blob/master/_examples/overview/main.go)
* [Tutorial: Online Visitors](https://github.com/kataras/iris/blob/master/_examples/tutorial/online-visitors)
* [Tutorial: URL Shortener using BoltDB](https://medium.com/@kataras/a-url-shortener-service-using-go-iris-and-bolt-4182f0b00ae7)
* [Tutorial: DropzoneJS + Go: How to build a file upload form](https://hackernoon.com/how-to-build-a-file-upload-form-using-dropzonejs-and-go-8fb9f258a991)
* [Structuring](https://github.com/kataras/iris/tree/master/_examples/#structuring)
* [Bootstrapper](https://github.com/kataras/iris/blob/master/_examples/structuring/bootstrap/bootstrap)
* [MVC with Repository and Service layer Overview](https://github.com/kataras/iris/tree/master/mvc/overview)
* [Login (MVC with Single Responsibility package)](https://github.com/kataras/iris/tree/master/structuring/login-mvc-single-responsible-package)
* [Login (MVC with Datamodels, Datasource, Repository and Service layer)](https://github.com/kataras/iris/tree/master/mvc/login)
* [HTTP Listening](https://github.com/kataras/iris/tree/master/_examples/#http-listening)
* [Common, with address](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-addr/main.go)
* [UNIX socket file](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-unix/main.go)
* [TLS](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-tls/main.go)
* [Letsencrypt (Automatic Certifications)](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-letsencrypt/main.go)
* [Custom net.Listener](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-listener/main.go)
* [SO_REUSEPORT for unix systems](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-listener/unix-reuseport/main.go)
* [Omit server errors](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-addr/omit-server-errors/main.go)
* [Custom HTTP Server](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/easy-way/main.go)
* [Custom HTTP Server (STD)](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/std-way/main.go)
* [Multi HTTP Servers](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/multi/main.go)
* [Graceful Shutdown](https://github.com/kataras/iris/blob/master/_examples/http-listening/graceful-shutdown/default-notifier/main.go)
* [Configuration](https://github.com/kataras/iris/tree/master/_examples/#configuration)
* [Functional](https://github.com/kataras/iris/blob/master/_examples/configuration/functional/main.go)
* [From Configuration Struct](https://github.com/kataras/iris/blob/master/_examples/configuration/from-configuration-structure/main.go)
* [Import from YAML file](https://github.com/kataras/iris/blob/master/_examples/configuration/from-yaml-file/main.go)
* [Import from TOML file](https://github.com/kataras/iris/blob/master/_examples/configuration/from-toml-file/main.go)
* [Routing](https://github.com/kataras/iris/tree/master/_examples/#routing-grouping-dynamic-path-parameters-macros-and-custom-context)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/routing/overview/main.go)
* [Basic](https://github.com/kataras/iris/blob/master/_examples/routing/basic/main.go)
* [Custom HTTP Errors](https://github.com/kataras/iris/blob/master/_examples/routing/http-errors/main.go)
* [Dynamic Path](https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/main.go)
* [Root level wildcard path]((https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/root-wildcard/main.go)
* [Reverse routing](https://github.com/kataras/iris/blob/master/_examples/routing/reverse/main.go)
* [Custom wrapper](https://github.com/kataras/iris/blob/master/_examples/routing/custom-wrapper/main.go)
* [Route State](https://github.com/kataras/iris/blob/master/_examples/routing/route-state/main.go)
* [MVC](https://github.com/kataras/iris/tree/master/_examples/#mvc)
* [Hello world]((https://github.com/kataras/iris/tree/master/_examples/mvc/hello-world)
* [Session Controller](https://github.com/kataras/iris/tree/master/_examples/mvc/session-controller)
* [Overview - Plus Repository and Service layers](https://github.com/kataras/tree/tree/master/_examples/mvc/overview)
* [Login showcase - Plus Repository and Service layers](https://github.com/kataras/iris/tree/master/_examples/mvc/login)
* [Custom Context](https://github.com/kataras/iris/tree/master/_examples/routing/custom-context)
* [Method Overriding](https://github.com/kataras/iris/blob/master/_examples/routing/custom-context/method-overriding/main.go)
* [New Implementation](https://github.com/kataras/iris/blob/master/_examples/routing/custom-context/new-implementation/main.go)
* [Convert http.Handler](https://github.com/kataras/iris/tree/master/_examples/convert-handlers)
* [From func(http.ResponseWriter, *http.Request, http.HandlerFunc)](convert-handlers/negroni-like/main.go)
* [From http.Handler or http.HandlerFunc](convert-handlers/nethttp/main.go)
* [Subdomains](subdomains)
* [Single](https://github.com/kataras/iris/blob/master/_examples/subdomains/single/main.go)
* [Multi](https://github.com/kataras/iris/blob/master/_examples/subdomains/multi/main.go)
* [Wildcard](https://github.com/kataras/iris/blob/master/_examples/subdomains/wildcard/main.go)
* [WWW](https://github.com/kataras/iris/blob/master/_examples/subdomains/www/main.go)
* [View](https://github.com/kataras/iris/tree/master/_examples/#view)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/view/overview/main.go)
* [Hi](https://github.com/kataras/iris/blob/master/_examples/view/template_html_0/main.go)
* [A simple Layout](https://github.com/kataras/iris/blob/master/_examples/view/template_html_1/main.go)
* [Layouts: `yield` and `render` tmpl funcs](https://github.com/kataras/iris/blob/master/_examples/view/template_html_2/main.go)
* [The `urlpath` tmpl func](https://github.com/kataras/iris/blob/master/_examples/view/template_html_3/main.go)
* [The `url` tmpl func](https://github.com/kataras/iris/blob/master/_examples/view/template_html_4/main.go)
* [Inject Data Between Handlers](https://github.com/kataras/iris/blob/master/_examples/view/context-view-data/main.go)
* [Embedding Templates Into App Executable File](https://github.com/kataras/iris/blob/master/_examples/view/embedding-templates-into-app/main.go)
* [Authentication](https://github.com/kataras/iris/tree/master/_examples/#authentication)
* [Basic Authentication](https://github.com/kataras/iris/blob/master/_examples/authentication/basicauth/main.go)
* [OAUth2](https://github.com/kataras/iris/blob/master/_examples/authentication/oauth2/main.go)
* [JWT](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/jwt/simple/main.go)
* [File Server](https://github.com/kataras/iris/tree/master/_examples/#file-server)
* [Favicon](https://github.com/kataras/iris/blob/master/_examples/file-server/favicon/main.go)
* [Basic](https://github.com/kataras/iris/blob/master/_examples/file-server/basic/main.go)
* [Embedding Files Into App Executable File](https://github.com/kataras/iris/blob/master/_examples/file-server/embedding-files-into-app/main.go)
* [Send/Force-Download Files](https://github.com/kataras/iris/blob/master/_examples/file-server/send-files/main.go)
* [Single Page Applications](https://github.com/kataras/iris/tree/master/_examples/file-server/single-page-application)
* [Single Page Application](https://github.com/kataras/iris/blob/master/_examples/file-server/single-page-application/basic/main.go)
* [Embedded Single Page Application](https://github.com/kataras/iris/blob/master/_examples/file-server/single-page-application/embedded-single-page-application/main.go)
* [How to Read from *http.Request`](https://github.com/kataras/iris/tree/master/_examples/#how-to-read-from-contextrequest-httprequest)
* [Bind JSON](https://github.com/kataras/iris/blob/master/_examples/http_request/read-json/main.go)
* [Bind Form](https://github.com/kataras/iris/blob/master/_examples/http_request/read-form/main.go)
* [Upload/Read Files](https://github.com/kataras/iris/blob/master/_examples/http_request/upload-files/main.go)
* [How to Write to http.ResponseWriter](https://github.com/kataras/iris/tree/master/_examples/#how-to-write-to-contextresponsewriter-httpresponsewriter)
* [Write `valyala/quicktemplate` templates](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/quicktemplate/main.go)
* [Text, Markdown, HTML, JSON, JSONP, XML, Binary](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/write-rest/main.go)
* [Stream Writer](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/stream-writer/main.go)
* [Transactions](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/transactions/main.go)
* [Miscellaneous](https://github.com/kataras/iris/blob/master/_examples/#miscellaneous)
* [Request Logger](https://github.com/kataras/iris/blob/master/_examples/http_request/request-logger/main.go)
* [Log Requests to a file](https://github.com/kataras/iris/blob/master/_examples/http_request/request-logger/request-logger-file/main.go)
* [Localization and Internationalization](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/i18n/main.go)
* [Recovery](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/recover/main.go)
* [Profiling (pprof)](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/pprof/main.go)
* [Internal Application File Logger](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/file-logger/main.go)
* [Testing](https://github.com/kataras/iris/blob/master/_examples/testing/httptest/main_test.go)
* [Caching](https://github.com/kataras/iris/blob/master/_examples/cache/simple/main.go)
* [Yaag - API Automated Docs](https://github.com/kataras/iris/blob/master/_examples/apidoc/yaag/main.go)
* [Sessions](https://github.com/kataras/iris/blob/master/_examples/#sessions)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/sessions/overview/main.go)
* [Standalone](https://github.com/kataras/iris/blob/master/_examples/sessions/standalone/main.go)
* [Secure Cookie](https://github.com/kataras/iris/blob/master/_examples/sessions/securecookie/main.go)
* [Flash Messages](https://github.com/kataras/iris/blob/master/_examples/sessions/flash-messages/main.go)
* [Database](https://github.com/kataras/iris/blob/master/_examples/sessions/database/main.go)
* [Websockets](https://github.com/kataras/iris/tree/master/_examples/#websockets)
* [Chat](https://github.com/kataras/iris/blob/master/_examples/websocket/chat/main.go)
* [Native Messages](https://github.com/kataras/iris/blob/master/_examples/websocket/native-messages/main.go)
* [Connection List](https://github.com/kataras/iris/blob/master/_examples/websocket/connectionlist/main.go)
* [TLS Enabled](https://github.com/kataras/iris/blob/master/_examples/websocket/secure/main.go)
* [Custom Raw Go Client](https://github.com/kataras/iris/blob/master/_examples/websocket/custom-go-client/main.go)
* [Experimental Handlers](https://github.com/kataras/iris/tree/master/_examples/experimental-handlers)
* [Casbin wrapper](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/casbin/wrapper/main.go)
* [Casbin middleware](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/casbin/middleware/main.go)
* [Cloudwatch](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cloudwatch/simple/main.go)
* [CORS](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cors/simple/main.go)
* [JWT](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/jwt/main.go)
* [Newrelic](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/newrelic/simple/main.go)
* [Prometheus](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/prometheus/simple/main.go)
* [Secure](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/secure/simple/main.go)
* [Tollboothic](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/tollboothic/limit-handler/main.go)

229
README.md

@ -1,56 +1,195 @@
Installation
------------
The only requirement is Go 1.6
The only requirement is [Go 1.9](https://golang.org/dl)
`$ go get -u github.com/kataras/iris`
```bash
$ go get -u github.com/kataras/iris/...
```
>If you are connected to the Internet through China [click here](https://kataras.gitbooks.io/iris/content/install.html)
Iris takes advantage of the [vendor directory](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo) feature. You get truly reproducible builds, as this method guards against upstream renames and deletes.
Getting Started
------------
```go
package main
import "github.com/kataras/iris"
func main() {
app := iris.New()
// Load all templates from the "./views" folder
// where extension is ".html" and parse them
// using the standard `html/template` package.
app.RegisterView(iris.HTML("./views", ".html"))
// Method: GET
// Resource: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Bind: {{.message}} with "Hello world!"
ctx.ViewData("message", "Hello world!")
// Render template file: ./views/hello.html
ctx.View("hello.html")
})
// Method: GET
// Resource: http://localhost:8080/user/42
//
// Need to use a custom regexp instead?
// Easy;
// Just mark the parameter's type to 'string'
// which accepts anything and make use of
// its `regexp` macro function, i.e:
// app.Get("/user/{id:string regexp(^[0-9]+$)}")
app.Get("/user/{id:long}", func(ctx iris.Context) {
userID, _ := ctx.Params().GetInt64("id")
ctx.Writef("User ID: %d", userID)
})
// Start the server using a network address.
app.Run(iris.Addr(":8080"))
}
```
> Learn more about path parameter's types by clicking [here](https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/main.go#L31)
```html
<!-- file: ./views/hello.html -->
<html>
<head>
<title>Hello Page</title>
</head>
<body>
<h1>{{.message}}</h1>
</body>
</html>
```
![overview screen](https://github.com/kataras/build-a-better-web-together/raw/master/overview_screen_1.png)
> Wanna re-start your app automatically when source code changes happens? Install the [rizla](https://github.com/kataras/rizla) tool and execute `rizla main.go` instead of `go run main.go`.
Table of Contents
------------
<a href="https://www.gitbook.com/book/kataras/iris/details"><img align="right" width="185" src="http://iris-go.com/assets/book/cover_1.png"></a>
<a href ="https://iris-go.com/v8/recipe"> <img align="right" alt="Book cover" src="https://raw.githubusercontent.com/kataras/build-a-better-web-together/master/cover.jpg" width="300" /></a>
* [Hi](https://kataras.gitbooks.io/iris/content/hi.html)
* [Transport Layer Security](https://kataras.gitbooks.io/iris/content/tls.html)
* [Handlers](https://kataras.gitbooks.io/iris/content/handlers.html)
* [Using Handlers](https://kataras.gitbooks.io/iris/content/using-handlers.html)
* [Using HandlerFuncs](https://kataras.gitbooks.io/iris/content/using-handlerfuncs.html)
* [Using native http.Handler](https://kataras.gitbooks.io/iris/content/using-native-httphandler.html)
* [Using native http.Handler via iris.ToHandlerFunc()](https://kataras.gitbooks.io/iris/content/using-native-httphandler-via-tohandlerfunc.html)
* [Middlewares](https://kataras.gitbooks.io/iris/content/middlewares.html)
* [API](https://kataras.gitbooks.io/iris/content/api.html)
* [Declaration](https://kataras.gitbooks.io/iris/content/declaration.html)
* [Configuration](https://kataras.gitbooks.io/iris/content/configuration.html)
* [Party](https://kataras.gitbooks.io/iris/content/party.html)
* [Subdomains](https://kataras.gitbooks.io/iris/content/subdomains.html)
* [Named Parameters](https://kataras.gitbooks.io/iris/content/named-parameters.html)
* [Static files](https://kataras.gitbooks.io/iris/content/static-files.html)
* [Send files](https://kataras.gitbooks.io/iris/content/send-files.html)
* [Render](https://kataras.gitbooks.io/iris/content/render.html)
* [REST](https://kataras.gitbooks.io/iris/content/render_rest.html)
* [Templates](https://kataras.gitbooks.io/iris/content/render_templates.html)
* [Gzip](https://kataras.gitbooks.io/iris/content/gzip.html)
* [Streaming](https://kataras.gitbooks.io/iris/content/streaming.html)
* [Cookies](https://kataras.gitbooks.io/iris/content/cookies.html)
* [Flash messages](https://kataras.gitbooks.io/iris/content/flashmessages.html)
* [Body binder](https://kataras.gitbooks.io/iris/content/request-body-bind.html)
* [Custom HTTP Errors](https://kataras.gitbooks.io/iris/content/custom-http-errors.html)
* [Context](https://kataras.gitbooks.io/iris/content/context.html)
* [Logger](https://kataras.gitbooks.io/iris/content/logger.html)
* [HTTP access control](https://kataras.gitbooks.io/iris/content/middleware-cors.html)
* [Secure](https://kataras.gitbooks.io/iris/content/middleware-secure.html)
* [Sessions](https://kataras.gitbooks.io/iris/content/package-sessions.html)
* [Websockets](https://kataras.gitbooks.io/iris/content/package-websocket.html)
* [Graceful](https://kataras.gitbooks.io/iris/content/package-graceful.html)
* [Recovery](https://kataras.gitbooks.io/iris/content/middleware-recovery.html)
* [Plugins](https://kataras.gitbooks.io/iris/content/plugins.html)
* [Internationalization and Localization](https://kataras.gitbooks.io/iris/content/middleware-internationalization-and-localization.html)
* [Easy Typescript](https://kataras.gitbooks.io/iris/content/plugin-typescript.html)
* [Browser based Editor](https://kataras.gitbooks.io/iris/content/plugin-editor.html)
* [Routes info](https://kataras.gitbooks.io/iris/content/plugin-routesinfo.html)
* [Control panel](https://kataras.gitbooks.io/iris/content/plugin-iriscontrol.html)
* [Examples](https://github.com/iris-contrib/examples)
* [Why a new web framework](Why.md)
* [Features](Features.md)
* [Versioning](Versioning.md)
* [Overview](https://github.com/kataras/iris/tree/master/_examples/#overview)
* [Hello world!](https://github.com/kataras/iris/blob/master/_examples/hello-world/main.go)
* [Glimpse](https://github.com/kataras/iris/blob/master/_examples/overview/main.go)
* [Tutorial: Online Visitors](https://github.com/kataras/iris/blob/master/_examples/tutorial/online-visitors)
* [Tutorial: URL Shortener using BoltDB](https://medium.com/@kataras/a-url-shortener-service-using-go-iris-and-bolt-4182f0b00ae7)
* [Tutorial: DropzoneJS + Go: How to build a file upload form](https://hackernoon.com/how-to-build-a-file-upload-form-using-dropzonejs-and-go-8fb9f258a991)
* [Structuring](https://github.com/kataras/iris/tree/master/_examples/#structuring)
* [Bootstrapper](https://github.com/kataras/iris/blob/master/_examples/structuring/bootstrap/bootstrap)
* [MVC with Repository and Service layer Overview](https://github.com/kataras/iris/tree/master/mvc/overview)
* [Login (MVC with Single Responsibility package)](https://github.com/kataras/iris/tree/master/structuring/login-mvc-single-responsible-package)
* [Login (MVC with Datamodels, Datasource, Repository and Service layer)](https://github.com/kataras/iris/tree/master/mvc/login)
* [HTTP Listening](https://github.com/kataras/iris/tree/master/_examples/#http-listening)
* [Common, with address](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-addr/main.go)
* [UNIX socket file](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-unix/main.go)
* [TLS](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-tls/main.go)
* [Letsencrypt (Automatic Certifications)](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-letsencrypt/main.go)
* [Custom net.Listener](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-listener/main.go)
* [SO_REUSEPORT for unix systems](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-listener/unix-reuseport/main.go)
* [Omit server errors](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-addr/omit-server-errors/main.go)
* [Custom HTTP Server](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/easy-way/main.go)
* [Custom HTTP Server (STD)](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/std-way/main.go)
* [Multi HTTP Servers](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/multi/main.go)
* [Graceful Shutdown](https://github.com/kataras/iris/blob/master/_examples/http-listening/graceful-shutdown/default-notifier/main.go)
* [Configuration](https://github.com/kataras/iris/tree/master/_examples/#configuration)
* [Functional](https://github.com/kataras/iris/blob/master/_examples/configuration/functional/main.go)
* [From Configuration Struct](https://github.com/kataras/iris/blob/master/_examples/configuration/from-configuration-structure/main.go)
* [Import from YAML file](https://github.com/kataras/iris/blob/master/_examples/configuration/from-yaml-file/main.go)
* [Import from TOML file](https://github.com/kataras/iris/blob/master/_examples/configuration/from-toml-file/main.go)
* [Routing](https://github.com/kataras/iris/tree/master/_examples/#routing-grouping-dynamic-path-parameters-macros-and-custom-context)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/routing/overview/main.go)
* [Basic](https://github.com/kataras/iris/blob/master/_examples/routing/basic/main.go)
* [Custom HTTP Errors](https://github.com/kataras/iris/blob/master/_examples/routing/http-errors/main.go)
* [Dynamic Path](https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/main.go)
* [Root level wildcard path]((https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/root-wildcard/main.go)
* [Reverse routing](https://github.com/kataras/iris/blob/master/_examples/routing/reverse/main.go)
* [Custom wrapper](https://github.com/kataras/iris/blob/master/_examples/routing/custom-wrapper/main.go)
* [Route State](https://github.com/kataras/iris/blob/master/_examples/routing/route-state/main.go)
* [MVC](https://github.com/kataras/iris/tree/master/_examples/#mvc)
* [Hello world]((https://github.com/kataras/iris/tree/master/_examples/mvc/hello-world)
* [Session Controller](https://github.com/kataras/iris/tree/master/_examples/mvc/session-controller)
* [Overview - Plus Repository and Service layers](https://github.com/kataras/tree/tree/master/_examples/mvc/overview)
* [Login showcase - Plus Repository and Service layers](https://github.com/kataras/iris/tree/master/_examples/mvc/login)
* [Custom Context](https://github.com/kataras/iris/tree/master/_examples/routing/custom-context)
* [Method Overriding](https://github.com/kataras/iris/blob/master/_examples/routing/custom-context/method-overriding/main.go)
* [New Implementation](https://github.com/kataras/iris/blob/master/_examples/routing/custom-context/new-implementation/main.go)
* [Convert http.Handler](https://github.com/kataras/iris/tree/master/_examples/convert-handlers)
* [From func(http.ResponseWriter, *http.Request, http.HandlerFunc)](convert-handlers/negroni-like/main.go)
* [From http.Handler or http.HandlerFunc](convert-handlers/nethttp/main.go)
* [Subdomains](subdomains)
* [Single](https://github.com/kataras/iris/blob/master/_examples/subdomains/single/main.go)
* [Multi](https://github.com/kataras/iris/blob/master/_examples/subdomains/multi/main.go)
* [Wildcard](https://github.com/kataras/iris/blob/master/_examples/subdomains/wildcard/main.go)
* [WWW](https://github.com/kataras/iris/blob/master/_examples/subdomains/www/main.go)
* [View](https://github.com/kataras/iris/tree/master/_examples/#view)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/view/overview/main.go)
* [Hi](https://github.com/kataras/iris/blob/master/_examples/view/template_html_0/main.go)
* [A simple Layout](https://github.com/kataras/iris/blob/master/_examples/view/template_html_1/main.go)
* [Layouts: `yield` and `render` tmpl funcs](https://github.com/kataras/iris/blob/master/_examples/view/template_html_2/main.go)
* [The `urlpath` tmpl func](https://github.com/kataras/iris/blob/master/_examples/view/template_html_3/main.go)
* [The `url` tmpl func](https://github.com/kataras/iris/blob/master/_examples/view/template_html_4/main.go)
* [Inject Data Between Handlers](https://github.com/kataras/iris/blob/master/_examples/view/context-view-data/main.go)
* [Embedding Templates Into App Executable File](https://github.com/kataras/iris/blob/master/_examples/view/embedding-templates-into-app/main.go)
* [Authentication](https://github.com/kataras/iris/tree/master/_examples/#authentication)
* [Basic Authentication](https://github.com/kataras/iris/blob/master/_examples/authentication/basicauth/main.go)
* [OAUth2](https://github.com/kataras/iris/blob/master/_examples/authentication/oauth2/main.go)
* [JWT](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/jwt/simple/main.go)
* [File Server](https://github.com/kataras/iris/tree/master/_examples/#file-server)
* [Favicon](https://github.com/kataras/iris/blob/master/_examples/file-server/favicon/main.go)
* [Basic](https://github.com/kataras/iris/blob/master/_examples/file-server/basic/main.go)
* [Embedding Files Into App Executable File](https://github.com/kataras/iris/blob/master/_examples/file-server/embedding-files-into-app/main.go)
* [Send/Force-Download Files](https://github.com/kataras/iris/blob/master/_examples/file-server/send-files/main.go)
* [Single Page Applications](https://github.com/kataras/iris/tree/master/_examples/file-server/single-page-application)
* [Single Page Application](https://github.com/kataras/iris/blob/master/_examples/file-server/single-page-application/basic/main.go)
* [Embedded Single Page Application](https://github.com/kataras/iris/blob/master/_examples/file-server/single-page-application/embedded-single-page-application/main.go)
* [How to Read from *http.Request`](https://github.com/kataras/iris/tree/master/_examples/#how-to-read-from-contextrequest-httprequest)
* [Bind JSON](https://github.com/kataras/iris/blob/master/_examples/http_request/read-json/main.go)
* [Bind Form](https://github.com/kataras/iris/blob/master/_examples/http_request/read-form/main.go)
* [Upload/Read Files](https://github.com/kataras/iris/blob/master/_examples/http_request/upload-files/main.go)
* [How to Write to http.ResponseWriter](https://github.com/kataras/iris/tree/master/_examples/#how-to-write-to-contextresponsewriter-httpresponsewriter)
* [Write `valyala/quicktemplate` templates](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/quicktemplate/main.go)
* [Text, Markdown, HTML, JSON, JSONP, XML, Binary](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/write-rest/main.go)
* [Stream Writer](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/stream-writer/main.go)
* [Transactions](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/transactions/main.go)
* [Miscellaneous](https://github.com/kataras/iris/blob/master/_examples/#miscellaneous)
* [Request Logger](https://github.com/kataras/iris/blob/master/_examples/http_request/request-logger/main.go)
* [Log Requests to a file](https://github.com/kataras/iris/blob/master/_examples/http_request/request-logger/request-logger-file/main.go)
* [Localization and Internationalization](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/i18n/main.go)
* [Recovery](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/recover/main.go)
* [Profiling (pprof)](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/pprof/main.go)
* [Internal Application File Logger](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/file-logger/main.go)
* [Testing](https://github.com/kataras/iris/blob/master/_examples/testing/httptest/main_test.go)
* [Caching](https://github.com/kataras/iris/blob/master/_examples/cache/simple/main.go)
* [Yaag - API Automated Docs](https://github.com/kataras/iris/blob/master/_examples/apidoc/yaag/main.go)
* [Sessions](https://github.com/kataras/iris/blob/master/_examples/#sessions)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/sessions/overview/main.go)
* [Standalone](https://github.com/kataras/iris/blob/master/_examples/sessions/standalone/main.go)
* [Secure Cookie](https://github.com/kataras/iris/blob/master/_examples/sessions/securecookie/main.go)
* [Flash Messages](https://github.com/kataras/iris/blob/master/_examples/sessions/flash-messages/main.go)
* [Database](https://github.com/kataras/iris/blob/master/_examples/sessions/database/main.go)
* [Websockets](https://github.com/kataras/iris/tree/master/_examples/#websockets)
* [Chat](https://github.com/kataras/iris/blob/master/_examples/websocket/chat/main.go)
* [Native Messages](https://github.com/kataras/iris/blob/master/_examples/websocket/native-messages/main.go)
* [Connection List](https://github.com/kataras/iris/blob/master/_examples/websocket/connectionlist/main.go)
* [TLS Enabled](https://github.com/kataras/iris/blob/master/_examples/websocket/secure/main.go)
* [Custom Raw Go Client](https://github.com/kataras/iris/blob/master/_examples/websocket/custom-go-client/main.go)
* [Experimental Handlers](https://github.com/kataras/iris/tree/master/_examples/experimental-handlers)
* [Casbin wrapper](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/casbin/wrapper/main.go)
* [Casbin middleware](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/casbin/middleware/main.go)
* [Cloudwatch](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cloudwatch/simple/main.go)
* [CORS](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cors/simple/main.go)
* [JWT](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/jwt/main.go)
* [Newrelic](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/newrelic/simple/main.go)
* [Prometheus](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/prometheus/simple/main.go)
* [Secure](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/secure/simple/main.go)
* [Tollboothic](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/tollboothic/limit-handler/main.go)

9
Versioning.md Normal file

@ -0,0 +1,9 @@
# Versioning
Current: [v8.5.7](https://github.com/kataras/iris/blob/master/HISTORY.md#tu-07-november-2017--v857)
Read more about Semantic Versioning 2.0.0
* [semver.org](http://semver.org/)
* [en.wikipedia.org/wiki/Software\_versioning](https://en.wikipedia.org/wiki/Software_versioning)
* [wiki.debian.org/UpstreamGuide\#Releases\_and\_Versions](https://wiki.debian.org/UpstreamGuide#Releases_and_Versions)

79
Why.md Normal file

@ -0,0 +1,79 @@
# Why
Go is a great technology stack for building scalable, web-based, back-end systems for web
applications.
When you think about building web applications and web APIs, or simply building HTTP servers in Go, does your mind go to the standard net/http package?
Then you have to deal with some common situations like dynamic routing (a.k.a parameterized), security and authentication, real-time communication and many other issues that net/http doesn't solve.
The net/http package is not complete enough to quickly build well-designed back-end web systems. When you realize this, you might be thinking along these lines:
- Ok, the net/http package doesn't suit me, but there are so many frameworks, which one will work for me?!
- Each one of them tells me that it is the best. I don't know what to do!
## The truth
I did some deep research and benchmarks with 'wrk' and 'ab' in order to choose which framework would suit me and my new project. The results, sadly, were really disappointing to me.
I started wondering if golang wasn't as fast on the web as I had read... but, before I let Golang go and continued to develop with nodejs, I told myself:
> '**Makis, don't lose hope, give at least a chance to Golang. Try to build something totally new without basing it off the "slow" code you saw earlier; learn the secrets of this language and make *others* follow your steps!**'.
These are the words I told myself that day [**13 March 2016**].
The same day, later the night, I was reading a book about Greek mythology. I saw an ancient goddess' name and was inspired immediately to give a name to this new web framework (which I had already started writing) - **Iris**.
**Two months later**, I'm writing this intro.
I'm still here [because Iris has succeed in being the fastest go web framework](https://github.com/kataras/iris#benchmarks)
![](https://comments.iris-go.com/screens/comment36.png)
![](https://comments.iris-go.com/screens/comment34.png)
![](https://comments.iris-go.com/screens/comment35.png)
![](https://comments.iris-go.com/screens/comment30.png)
![](https://comments.iris-go.com/screens/comment31.png)
![](https://comments.iris-go.com/screens/comment32.png)
![](https://comments.iris-go.com/screens/comment33.png)
![](https://comments.iris-go.com/screens/comment29.png)
![](https://comments.iris-go.com/screens/comment26.png)
![](https://comments.iris-go.com/screens/comment25.png)
![](https://comments.iris-go.com/screens/comment1.png)
![](https://comments.iris-go.com/screens/comment2.png)
![](https://comments.iris-go.com/screens/comment3.png)
![](https://comments.iris-go.com/screens/comment4.png)
![](https://comments.iris-go.com/screens/comment5.png)
![](https://comments.iris-go.com/screens/comment6.png)
![](https://comments.iris-go.com/screens/comment7.png)
![](https://comments.iris-go.com/screens/comment8.png)
![](https://comments.iris-go.com/screens/comment10.png)
![](https://comments.iris-go.com/screens/comment12.png)
![](https://comments.iris-go.com/screens/comment13.png)
![](https://comments.iris-go.com/screens/comment14.png)
![](https://comments.iris-go.com/screens/comment17.png)
![](https://comments.iris-go.com/screens/comment21.png)
![](https://comments.iris-go.com/screens/comment22.png)
![](https://comments.iris-go.com/screens/comment24.png)
![](https://comments.iris-go.com/screens/comment23.png)
![](https://comments.iris-go.com/screens/comment27.png)

@ -1,6 +1,15 @@
<div style="width:100%">
<a href="https://www.gitbook.com/read/book/kataras/iris"><img align="left" width="155" src="http://iris-go.com/assets/book/cover_1.png"></a>
<a href="https://www.gitbook.com/read/book/kataras/iris">
<img align="right" width="470px" src="http://iris-go.com/assets/hi_iris_may.gif"></a>
</div>
<div style="padding: 50px 0;color: #000;text-align: center;">
<a style="font-weight: 700;color: #000;margin: 4px;" href="mailto:kataras2006@hotmail.com?subject=Iris%20web%20framework">
Mail
</a>
<a style="font-weight: 700;color: #000;margin: 4px;" target="_blank" href="https://www.facebook.com/iris.framework">
Facebook
</a>
<a style="font-weight: 700;color: #000;margin: 4px;" target="_blank" href="https://twitter.com/MakisMaropoulos">
Twitter
</a>
<br/>
<br/> Copyright &copy; 2016 - 2017 Gerasimos Maropoulos
<br/>
<i style="font-size:13px">Iris is accelerated by <a style="font-weight: 700;color: #000;margin: 4px;" href="https://www.keycdn.com/">KeyCDN</a>, A Simple, Fast and Reliable CDN.</i>
</div>

@ -1,42 +1,118 @@
* [Hi](https://kataras.gitbooks.io/iris/content/hi.html)
* [Transport Layer Security](https://kataras.gitbooks.io/iris/content/tls.html)
* [Handlers](https://kataras.gitbooks.io/iris/content/handlers.html)
* [Using Handlers](https://kataras.gitbooks.io/iris/content/using-handlers.html)
* [Using HandlerFuncs](https://kataras.gitbooks.io/iris/content/using-handlerfuncs.html)
* [Using native http.Handler](https://kataras.gitbooks.io/iris/content/using-native-httphandler.html)
* [Using native http.Handler via iris.ToHandlerFunc()](https://kataras.gitbooks.io/iris/content/using-native-httphandler-via-tohandlerfunc.html)
* [Middlewares](https://kataras.gitbooks.io/iris/content/middlewares.html)
* [API](https://kataras.gitbooks.io/iris/content/api.html)
* [Declaration](https://kataras.gitbooks.io/iris/content/declaration.html)
* [Configuration](https://kataras.gitbooks.io/iris/content/configuration.html)
* [Party](https://kataras.gitbooks.io/iris/content/party.html)
* [Subdomains](https://kataras.gitbooks.io/iris/content/subdomains.html)
* [Named Parameters](https://kataras.gitbooks.io/iris/content/named-parameters.html)
* [Static files](https://kataras.gitbooks.io/iris/content/static-files.html)
* [Send files](https://kataras.gitbooks.io/iris/content/send-files.html)
* [Render](https://kataras.gitbooks.io/iris/content/render.html)
* [REST](https://kataras.gitbooks.io/iris/content/render_rest.html)
* [Templates](https://kataras.gitbooks.io/iris/content/render_templates.html)
* [Gzip](https://kataras.gitbooks.io/iris/content/gzip.html)
* [Streaming](https://kataras.gitbooks.io/iris/content/streaming.html)
* [Cookies](https://kataras.gitbooks.io/iris/content/cookies.html)
* [Flash messages](https://kataras.gitbooks.io/iris/content/flashmessages.html)
* [Body binder](https://kataras.gitbooks.io/iris/content/request-body-bind.html)
* [Custom HTTP Errors](https://kataras.gitbooks.io/iris/content/custom-http-errors.html)
* [Context](https://kataras.gitbooks.io/iris/content/context.html)
* [Logger](https://kataras.gitbooks.io/iris/content/logger.html)
* [HTTP access control](https://kataras.gitbooks.io/iris/content/middleware-cors.html)
* [Secure](https://kataras.gitbooks.io/iris/content/middleware-secure.html)
* [Sessions](https://kataras.gitbooks.io/iris/content/package-sessions.html)
* [Websockets](https://kataras.gitbooks.io/iris/content/package-websocket.html)
* [Graceful](https://kataras.gitbooks.io/iris/content/package-graceful.html)
* [Recovery](https://kataras.gitbooks.io/iris/content/middleware-recovery.html)
* [Plugins](https://kataras.gitbooks.io/iris/content/plugins.html)
* [Internationalization and Localization](https://kataras.gitbooks.io/iris/content/middleware-internationalization-and-localization.html)
* [Easy Typescript](https://kataras.gitbooks.io/iris/content/plugin-typescript.html)
* [Browser based Editor](https://kataras.gitbooks.io/iris/content/plugin-editor.html)
* [Routes info](https://kataras.gitbooks.io/iris/content/plugin-routesinfo.html)
* [Control panel](https://kataras.gitbooks.io/iris/content/plugin-iriscontrol.html)
* [Examples](https://github.com/iris-contrib/examples)
* [Why a new web framework](Why.md)
* [Features](Features.md)
* [Versioning](Versioning.md)
* [Overview](https://github.com/kataras/iris/tree/master/_examples/#overview)
* [Hello world!](https://github.com/kataras/iris/blob/master/_examples/hello-world/main.go)
* [Glimpse](https://github.com/kataras/iris/blob/master/_examples/overview/main.go)
* [Tutorial: Online Visitors](https://github.com/kataras/iris/blob/master/_examples/tutorial/online-visitors)
* [Tutorial: URL Shortener using BoltDB](https://medium.com/@kataras/a-url-shortener-service-using-go-iris-and-bolt-4182f0b00ae7)
* [Tutorial: DropzoneJS + Go: How to build a file upload form](https://hackernoon.com/how-to-build-a-file-upload-form-using-dropzonejs-and-go-8fb9f258a991)
* [Structuring](https://github.com/kataras/iris/tree/master/_examples/#structuring)
* [Bootstrapper](https://github.com/kataras/iris/blob/master/_examples/structuring/bootstrap/bootstrap)
* [MVC with Repository and Service layer Overview](https://github.com/kataras/iris/tree/master/mvc/overview)
* [Login (MVC with Single Responsibility package)](https://github.com/kataras/iris/tree/master/structuring/login-mvc-single-responsible-package)
* [Login (MVC with Datamodels, Datasource, Repository and Service layer)](https://github.com/kataras/iris/tree/master/mvc/login)
* [HTTP Listening](https://github.com/kataras/iris/tree/master/_examples/#http-listening)
* [Common, with address](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-addr/main.go)
* [UNIX socket file](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-unix/main.go)
* [TLS](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-tls/main.go)
* [Letsencrypt (Automatic Certifications)](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-letsencrypt/main.go)
* [Custom net.Listener](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-listener/main.go)
* [SO_REUSEPORT for unix systems](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-listener/unix-reuseport/main.go)
* [Omit server errors](https://github.com/kataras/iris/blob/master/_examples/http-listening/listen-addr/omit-server-errors/main.go)
* [Custom HTTP Server](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/easy-way/main.go)
* [Custom HTTP Server (STD)](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/std-way/main.go)
* [Multi HTTP Servers](https://github.com/kataras/iris/blob/master/_examples/http-listening/custom-httpserver/multi/main.go)
* [Graceful Shutdown](https://github.com/kataras/iris/blob/master/_examples/http-listening/graceful-shutdown/default-notifier/main.go)
* [Configuration](https://github.com/kataras/iris/tree/master/_examples/#configuration)
* [Functional](https://github.com/kataras/iris/blob/master/_examples/configuration/functional/main.go)
* [From Configuration Struct](https://github.com/kataras/iris/blob/master/_examples/configuration/from-configuration-structure/main.go)
* [Import from YAML file](https://github.com/kataras/iris/blob/master/_examples/configuration/from-yaml-file/main.go)
* [Import from TOML file](https://github.com/kataras/iris/blob/master/_examples/configuration/from-toml-file/main.go)
* [Routing](https://github.com/kataras/iris/tree/master/_examples/#routing-grouping-dynamic-path-parameters-macros-and-custom-context)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/routing/overview/main.go)
* [Basic](https://github.com/kataras/iris/blob/master/_examples/routing/basic/main.go)
* [Custom HTTP Errors](https://github.com/kataras/iris/blob/master/_examples/routing/http-errors/main.go)
* [Dynamic Path](https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/main.go)
* [Root level wildcard path]((https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/root-wildcard/main.go)
* [Reverse routing](https://github.com/kataras/iris/blob/master/_examples/routing/reverse/main.go)
* [Custom wrapper](https://github.com/kataras/iris/blob/master/_examples/routing/custom-wrapper/main.go)
* [Route State](https://github.com/kataras/iris/blob/master/_examples/routing/route-state/main.go)
* [MVC](https://github.com/kataras/iris/tree/master/_examples/#mvc)
* [Hello world]((https://github.com/kataras/iris/tree/master/_examples/mvc/hello-world)
* [Session Controller](https://github.com/kataras/iris/tree/master/_examples/mvc/session-controller)
* [Overview - Plus Repository and Service layers](https://github.com/kataras/tree/tree/master/_examples/mvc/overview)
* [Login showcase - Plus Repository and Service layers](https://github.com/kataras/iris/tree/master/_examples/mvc/login)
* [Custom Context](https://github.com/kataras/iris/tree/master/_examples/routing/custom-context)
* [Method Overriding](https://github.com/kataras/iris/blob/master/_examples/routing/custom-context/method-overriding/main.go)
* [New Implementation](https://github.com/kataras/iris/blob/master/_examples/routing/custom-context/new-implementation/main.go)
* [Convert http.Handler](https://github.com/kataras/iris/tree/master/_examples/convert-handlers)
* [From func(http.ResponseWriter, *http.Request, http.HandlerFunc)](convert-handlers/negroni-like/main.go)
* [From http.Handler or http.HandlerFunc](convert-handlers/nethttp/main.go)
* [Subdomains](subdomains)
* [Single](https://github.com/kataras/iris/blob/master/_examples/subdomains/single/main.go)
* [Multi](https://github.com/kataras/iris/blob/master/_examples/subdomains/multi/main.go)
* [Wildcard](https://github.com/kataras/iris/blob/master/_examples/subdomains/wildcard/main.go)
* [WWW](https://github.com/kataras/iris/blob/master/_examples/subdomains/www/main.go)
* [View](https://github.com/kataras/iris/tree/master/_examples/#view)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/view/overview/main.go)
* [Hi](https://github.com/kataras/iris/blob/master/_examples/view/template_html_0/main.go)
* [A simple Layout](https://github.com/kataras/iris/blob/master/_examples/view/template_html_1/main.go)
* [Layouts: `yield` and `render` tmpl funcs](https://github.com/kataras/iris/blob/master/_examples/view/template_html_2/main.go)
* [The `urlpath` tmpl func](https://github.com/kataras/iris/blob/master/_examples/view/template_html_3/main.go)
* [The `url` tmpl func](https://github.com/kataras/iris/blob/master/_examples/view/template_html_4/main.go)
* [Inject Data Between Handlers](https://github.com/kataras/iris/blob/master/_examples/view/context-view-data/main.go)
* [Embedding Templates Into App Executable File](https://github.com/kataras/iris/blob/master/_examples/view/embedding-templates-into-app/main.go)
* [Authentication](https://github.com/kataras/iris/tree/master/_examples/#authentication)
* [Basic Authentication](https://github.com/kataras/iris/blob/master/_examples/authentication/basicauth/main.go)
* [OAUth2](https://github.com/kataras/iris/blob/master/_examples/authentication/oauth2/main.go)
* [JWT](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/jwt/simple/main.go)
* [File Server](https://github.com/kataras/iris/tree/master/_examples/#file-server)
* [Favicon](https://github.com/kataras/iris/blob/master/_examples/file-server/favicon/main.go)
* [Basic](https://github.com/kataras/iris/blob/master/_examples/file-server/basic/main.go)
* [Embedding Files Into App Executable File](https://github.com/kataras/iris/blob/master/_examples/file-server/embedding-files-into-app/main.go)
* [Send/Force-Download Files](https://github.com/kataras/iris/blob/master/_examples/file-server/send-files/main.go)
* [Single Page Applications](https://github.com/kataras/iris/tree/master/_examples/file-server/single-page-application)
* [Single Page Application](https://github.com/kataras/iris/blob/master/_examples/file-server/single-page-application/basic/main.go)
* [Embedded Single Page Application](https://github.com/kataras/iris/blob/master/_examples/file-server/single-page-application/embedded-single-page-application/main.go)
* [How to Read from *http.Request`](https://github.com/kataras/iris/tree/master/_examples/#how-to-read-from-contextrequest-httprequest)
* [Bind JSON](https://github.com/kataras/iris/blob/master/_examples/http_request/read-json/main.go)
* [Bind Form](https://github.com/kataras/iris/blob/master/_examples/http_request/read-form/main.go)
* [Upload/Read Files](https://github.com/kataras/iris/blob/master/_examples/http_request/upload-files/main.go)
* [How to Write to http.ResponseWriter](https://github.com/kataras/iris/tree/master/_examples/#how-to-write-to-contextresponsewriter-httpresponsewriter)
* [Write `valyala/quicktemplate` templates](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/quicktemplate/main.go)
* [Text, Markdown, HTML, JSON, JSONP, XML, Binary](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/write-rest/main.go)
* [Stream Writer](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/stream-writer/main.go)
* [Transactions](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/transactions/main.go)
* [Miscellaneous](https://github.com/kataras/iris/blob/master/_examples/#miscellaneous)
* [Request Logger](https://github.com/kataras/iris/blob/master/_examples/http_request/request-logger/main.go)
* [Log Requests to a file](https://github.com/kataras/iris/blob/master/_examples/http_request/request-logger/request-logger-file/main.go)
* [Localization and Internationalization](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/i18n/main.go)
* [Recovery](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/recover/main.go)
* [Profiling (pprof)](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/pprof/main.go)
* [Internal Application File Logger](https://github.com/kataras/iris/blob/master/_examples/miscellaneous/file-logger/main.go)
* [Testing](https://github.com/kataras/iris/blob/master/_examples/testing/httptest/main_test.go)
* [Caching](https://github.com/kataras/iris/blob/master/_examples/cache/simple/main.go)
* [Yaag - API Automated Docs](https://github.com/kataras/iris/blob/master/_examples/apidoc/yaag/main.go)
* [Sessions](https://github.com/kataras/iris/blob/master/_examples/#sessions)
* [Overview](https://github.com/kataras/iris/blob/master/_examples/sessions/overview/main.go)
* [Standalone](https://github.com/kataras/iris/blob/master/_examples/sessions/standalone/main.go)
* [Secure Cookie](https://github.com/kataras/iris/blob/master/_examples/sessions/securecookie/main.go)
* [Flash Messages](https://github.com/kataras/iris/blob/master/_examples/sessions/flash-messages/main.go)
* [Database](https://github.com/kataras/iris/blob/master/_examples/sessions/database/main.go)
* [Websockets](https://github.com/kataras/iris/tree/master/_examples/#websockets)
* [Chat](https://github.com/kataras/iris/blob/master/_examples/websocket/chat/main.go)
* [Native Messages](https://github.com/kataras/iris/blob/master/_examples/websocket/native-messages/main.go)
* [Connection List](https://github.com/kataras/iris/blob/master/_examples/websocket/connectionlist/main.go)
* [TLS Enabled](https://github.com/kataras/iris/blob/master/_examples/websocket/secure/main.go)
* [Custom Raw Go Client](https://github.com/kataras/iris/blob/master/_examples/websocket/custom-go-client/main.go)
* [Experimental Handlers](https://github.com/kataras/iris/tree/master/_examples/experimental-handlers)
* [Casbin wrapper](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/casbin/wrapper/main.go)
* [Casbin middleware](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/casbin/middleware/main.go)
* [Cloudwatch](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cloudwatch/simple/main.go)
* [CORS](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cors/simple/main.go)
* [JWT](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/jwt/main.go)
* [Newrelic](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/newrelic/simple/main.go)
* [Prometheus](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/prometheus/simple/main.go)
* [Secure](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/secure/simple/main.go)
* [Tollboothic](https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/tollboothic/limit-handler/main.go)