{"id":37135090,"url":"https://github.com/iris-framework/iris","last_synced_at":"2026-01-14T15:45:37.278Z","repository":{"id":57559575,"uuid":"88532878","full_name":"iris-framework/iris","owner":"iris-framework","description":"The fastest web framework for Go in (THIS) Earth. HTTP/2 Ready-To-GO.","archived":false,"fork":true,"pushed_at":"2017-04-18T00:06:20.000Z","size":10098,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-13T17:53:04.384Z","etag":null,"topics":["cross-platform","easy-to-use","go","golang","high-performance","http2","iris","respect-for-the-contributors","web-framework"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"kataras/iris","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iris-framework.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-17T17:33:51.000Z","updated_at":"2017-04-17T17:37:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/iris-framework/iris","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/iris-framework/iris","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iris-framework%2Firis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iris-framework%2Firis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iris-framework%2Firis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iris-framework%2Firis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iris-framework","download_url":"https://codeload.github.com/iris-framework/iris/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iris-framework%2Firis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28424719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T15:24:48.085Z","status":"ssl_error","status_checked_at":"2026-01-14T15:23:41.940Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","easy-to-use","go","golang","high-performance","http2","iris","respect-for-the-contributors","web-framework"],"created_at":"2026-01-14T15:45:36.470Z","updated_at":"2026-01-14T15:45:37.262Z","avatar_url":"https://github.com/iris-framework.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://travis-ci.org/iris-framework/iris\"\u003e\u003cimg src=\"https://api.travis-ci.org/iris-framework/iris.svg?branch=v6\u0026style=flat-square\" alt=\"Build Status\"\u003e\u003c/a\u003e\n\u003ca href=\"http://goreportcard.com/report/iris-framework/iris\"\u003e\u003cimg src=\"https://img.shields.io/badge/report%20card%20-a%2B-F44336.svg?style=flat-square\" alt=\"http://goreportcard.com/report/iris-framework/iris\"\u003e\u003c/a\u003e\n\u003ca href=\"http://support.iris-go.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/support-page-ec2eb4.svg?style=flat-square\" alt=\"Iris support forum\"\u003e\u003c/a\u003e \u003c!-- \u003ca href=\"https://github.com/iris-framework/iris/blob/v6/HISTORY.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/codename-√Νεxτ%20-blue.svg?style=flat-square\" alt=\"CHANGELOG/HISTORY\"\u003e\u003c/a\u003e --\u003e\u003ca href=\"https://github.com/iris-framework/iris/tree/v6/_examples#table-of-contents\"\u003e\u003cimg src=\"https://img.shields.io/badge/examples-%20repository-3362c2.svg?style=flat-square\" alt=\"Examples for new Gophers\"\u003e\u003c/a\u003e\n\u003ca href=\"https://godoc.org/gopkg.in/iris-framework/iris.v6\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-%20reference-5272B4.svg?style=flat-square\" alt=\"Docs\"\u003e\u003c/a\u003e\n\u003ca href=\"https://iris-framework.rocket.chat/channel/iris\"\u003e\u003cimg src=\"https://img.shields.io/badge/community-%20chat-00BCD4.svg?style=flat-square\" alt=\"Chat\"\u003e\u003c/a\u003e\n\u003cbr/\u003e\nIris is an \u003cb\u003eefficient\u003c/b\u003e and well-designed, \u003cb\u003ecross-platform, web framework\u003c/b\u003e with robust set of \u003cb\u003efeatures\u003c/b\u003e.\u003cbr/\u003eBuild your own \u003cb\u003ehigh-performance\u003c/b\u003e web applications and \u003cb\u003eAPIs\u003c/b\u003e powered by unlimited \u003cb\u003epotentials and portability\u003c/b\u003e.\n\nIf you're coming from \u003ca href=\"https://nodejs.org/en/\"\u003eNode.js\u003c/a\u003e world, this is the \u003ca href=\"https://github.com/expressjs/express\"\u003eexpressjs\u003c/a\u003e equivalent for the \u003ca href=\"https://golang.org\"\u003eGo Programming Language.\u003c/a\u003e\n\u003c/p\u003e\n\n\nFeature Overview\n-----------\n\n- Focus on high performance\n- Automatically install and serve certificates from https://letsencrypt.org\n- Robust routing and middleware ecosystem\n- Build RESTful APIs\n- Choose your favorite routes' path syntax between [httprouter](https://github.com/iris-framework/iris/blob/v6/_examples/beginner/routes-using-httprouter/main.go) and [gorillamux](https://github.com/iris-framework/iris/blob/v6/_examples/beginner/routes-using-gorillamux/main.go)\n- Request-Scoped Transactions\n- Group API's and subdomains with wildcard support\n- Body binding for JSON, XML, Forms, can be extended to use your own custom binders\n- More than 50 handy functions to send HTTP responses\n- View system: supporting more than 6+ template engines, with prerenders. You can still use your favorite\n- Define virtual hosts and (wildcard) subdomains with path level routing\n- Graceful shutdown\n- Limit request body\n- Localization i18N\n- Serve static files\n- Cache\n- Log requests\n- Customizable format and output for the logger\n- Customizable HTTP errors\n- Compression (Gzip)\n- Authentication\n - OAuth, OAuth2 supporting 27+ popular websites\n - JWT\n - Basic Authentication\n - HTTP Sessions\n- Add / Remove trailing slash from the URL with option to redirect\n- Redirect requests\n - HTTP to HTTPS\n - HTTP to HTTPS WWW\n - HTTP to HTTPS non WWW\n - Non WWW to WWW\n - WWW to non WWW\n- Highly scalable rich content render (Markdown, JSON, JSONP, XML...)\n- Websocket-only API similar to socket.io\n- Hot Reload on source code changes\n- Typescript integration + Web IDE\n- Checks for updates at startup\n- Highly customizable\n- Feels like you used iris forever, thanks to its Fluent API\n- And many others...\n\n\nTable of Contents\n-----------\n\n\u003ca href=\"https://github.com/iris-framework/iris/tree/v6/_examples#table-of-contents\"\u003e\u003cimg align=\"right\" width=\"265\" src=\"https://raw.githubusercontent.com/iris-contrib/website/gh-pages/assets/book/cover_4.jpg\"\u003e\u003c/a\u003e\n\n\n* [Level: Beginner](_examples/beginner)\n    * [Hello World](_examples/beginner/hello-world/main.go)\n    * [Routes (using httprouter)](_examples/beginner/routes-using-httprouter/main.go)\n    * [Routes (using gorillamux)](_examples/beginner/routes-using-gorillamux/main.go)\n    * [Internal Application File Logger](_examples/beginner/file-logger/main.go)\n    * [Write JSON](_examples/beginner/write-json/main.go)\n    * [Read JSON](_examples/beginner/read-json/main.go)\n    * [Read Form](_examples/beginner/read-form/main.go)\n    * [Favicon](_examples/beginner/favicon/main.go)\n    * [File Server](_examples/beginner/file-server/main.go)\n    * [Send Files](_examples/beginner/send-files/main.go)\n    * [Stream Writer](_examples/beginner/stream-writer/main.go)\n    * [Listen UNIX Socket](_examples/beginner/listen-unix/main.go)\n    * [Listen TLS](_examples/beginner/listen-tls/main.go)\n    * [Listen Letsencrypt (Automatic Certifications)](_examples/beginner/listen-letsencrypt/main.go)\n* [Level: Intermediate](_examples/intermediate)\n    * [Send An E-mail](_examples/intermediate/e-mail/main.go)\n    * [Upload/Read Files](_examples/intermediate/upload-files/main.go)\n    * [Request Logger](_examples/intermediate/request-logger/main.go)\n    * [Profiling (pprof)](_examples/intermediate/pprof/main.go)\n    * [Basic Authentication](_examples/intermediate/basicauth/main.go)\n    * [HTTP Access Control](_examples/intermediate/cors/main.go)\n    * [Cache Markdown](_examples/intermediate/cache-markdown/main.go)\n    * [Localization and Internationalization](_examples/intermediate/i18n/main.go)\n    * [Recovery](_examples/intermediate/recover/main.go)\n    * [Graceful Shutdown](_examples/intermediate/graceful-shutdown/main.go)\n    * [Custom TCP Listener](_examples/intermediate/custom-listener/main.go)\n    * [Custom HTTP Server](_examples/intermediate/custom-httpserver/main.go)\n    * [View Engine](_examples/intermediate/view)\n        * [Overview](_examples/intermediate/view/overview/main.go)\n        * [Template HTML: Part Zero](_examples/intermediate/view/template_html_0/main.go)\n        * [Template HTML: Part One](_examples/intermediate/view/template_html_1/main.go)\n        * [Template HTML: Part Two](_examples/intermediate/view/template_html_2/main.go)\n        * [Template HTML: Part Three](_examples/intermediate/view/template_html_3/main.go)\n        * [Template HTML: Part Four](_examples/intermediate/view/template_html_4/main.go)\n        * [Inject Data Between Handlers](_examples/intermediate/view/context-view-data/main.go)\n        * [Embedding Templates Into Executable](_examples/intermediate/view/embedding-templates-into-app)\n        * [Custom Renderer](_examples/intermediate/view/custom-renderer/main.go)\n    * [Password Hashing](_examples/intermediate/password-hashing/main.go)\n    * [Sessions](_examples/intermediate/sessions)\n        * [Overview](_examples/intermediate/sessions/overview/main.go)\n        * [Encoding \u0026 Decoding the Session ID: Secure Cookie](_examples/intermediate/sessions/securecookie/main.go)\n        * [Standalone](_examples/intermediate/sessions/standalone/main.go)\n        * [With A Back-End Database](_examples/intermediate/sessions/database/main.go)\n    * [Flash Messages](_examples/intermediate/flash-messages/main.go)\n    * [Websockets](_examples/intermediate/websockets)\n        * [Ridiculous Simple](_examples/intermediate/websockets/ridiculous-simple/main.go)\n        * [Overview](_examples/intermediate/websockets/overview/main.go)\n        * [Connection List](_examples/intermediate/websockets/connectionlist/main.go)\n        * [Native Messages](_examples/intermediate/websockets/naive-messages/main.go)\n        * [Secure](_examples/intermediate/websockets/secure/main.go)\n        * [Custom Go Client](_examples/intermediate/websockets/custom-go-client/main.go)\n* [Level: Advanced](_examples/advanced)\n    * [Transactions](_examples/advanced/transactions/main.go)\n    * [HTTP Testing](_examples/advanced/httptest/main_test.go)\n    * [Watch \u0026 Compile Typescript source files](_examples/advanced/typescript/main.go)\n    * [Cloud Editor](_examples/advanced/cloud-editor/main.go)\n    * [Online Visitors](_examples/advanced/online-visitors/main.go)\n    * [URL Shortener using BoltDB](_examples/advanced/url-shortener/main.go)\n    * [Subdomains](_examples/advanced/subdomains)\n        * [Single](_examples/advanced/subdomains/single/main.go)\n        * [Multi](_examples/advanced/subdomains/multi/main.go)\n        * [Wildcard](_examples/advanced/subdomains/wildcard/main.go)\n\nInstallation\n-----------\n\nThe only requirement is the [Go Programming Language](https://golang.org/dl/), at least 1.8\n\n```sh\n$ go get gopkg.in/iris-framework/iris.v6\n```\n\nFor further installation support, navigate [here](http://support.iris-go.com/d/16-how-to-install-iris-web-framework).\n\n\nOverview\n-----------\n\n```go\npackage main\n\nimport (\n\t\"gopkg.in/iris-framework/iris.v6\"\n\t\"gopkg.in/iris-framework/iris.v6/adaptors/cors\"\n\t\"gopkg.in/iris-framework/iris.v6/adaptors/httprouter\"\n\t\"gopkg.in/iris-framework/iris.v6/adaptors/view\"\n)\n\nfunc main() {\n\t// Receives optional iris.Configuration{}, see ./configuration.go\n\t// for more.\n\tapp := iris.New()\n\n\t// Order doesn't matter,\n\t// You can split it to different .Adapt calls.\n\t// See ./adaptors folder for more.\n\tapp.Adapt(\n\t\t// adapt a logger which prints all errors to the os.Stdout\n\t\tiris.DevLogger(),\n\t\t// adapt the adaptors/httprouter or adaptors/gorillamux\n\t\thttprouter.New(),\n\t\t// 5 template engines are supported out-of-the-box:\n\t\t//\n\t\t// - standard html/template\n\t\t// - amber\n\t\t// - django\n\t\t// - handlebars\n\t\t// - pug(jade)\n\t\t//\n\t\t// Use the html standard engine for all files inside \"./views\" folder with extension \".html\"\n\t\tview.HTML(\"./views\", \".html\"),\n\t\t// Cors wrapper to the entire application, allow all origins.\n\t\tcors.New(cors.Options{AllowedOrigins: []string{\"*\"}}))\n\n\t// http://localhost:6300\n\t// Method: \"GET\"\n\t// Render ./views/index.html\n\tapp.Get(\"/\", func(ctx *iris.Context) {\n\t\tctx.Render(\"index.html\", iris.Map{\"Title\": \"Page Title\"}, iris.RenderOptions{\"gzip\": true})\n\t})\n\n\t// Group routes, optionally: share middleware, template layout and custom http errors.\n\tuserAPI := app.Party(\"/users\", userAPIMiddleware).\n\t\tLayout(\"layouts/userLayout.html\")\n\t{\n\t\t// Fire userNotFoundHandler when Not Found\n\t\t// inside http://localhost:6300/users/*anything\n\t\tuserAPI.OnError(404, userNotFoundHandler)\n\n\t\t// http://localhost:6300/users\n\t\t// Method: \"GET\"\n\t\tuserAPI.Get(\"/\", getAllHandler)\n\n\t\t// http://localhost:6300/users/42\n\t\t// Method: \"GET\"\n\t\tuserAPI.Get(\"/:id\", getByIDHandler)\n\n\t\t// http://localhost:6300/users\n\t\t// Method: \"POST\"\n\t\tuserAPI.Post(\"/\", saveUserHandler)\n\t}\n\n\t// Start the server at 127.0.0.1:6300\n\tapp.Listen(\":6300\")\n}\n\nfunc userAPIMiddleware(ctx *iris.Context) {\n\t// your code here...\n\tprintln(\"Request: \" + ctx.Path())\n\tctx.Next() // go to the next handler(s)\n}\n\nfunc userNotFoundHandler(ctx *iris.Context) {\n\t// your code here...\n\tctx.HTML(iris.StatusNotFound, \"\u003ch1\u003e User page not found \u003c/h1\u003e\")\n}\n\nfunc getAllHandler(ctx *iris.Context) {\n\t// your code here...\n}\n\nfunc getByIDHandler(ctx *iris.Context) {\n\t// take the :id from the path, parse to integer\n\t// and set it to the new userID local variable.\n\tuserID, _ := ctx.ParamInt(\"id\")\n\n\t// userRepo, imaginary database service \u003c- your only job.\n\tuser := userRepo.GetByID(userID)\n\n\t// send back a response to the client,\n\t// .JSON: content type as application/json; charset=\"utf-8\"\n\t// iris.StatusOK: with 200 http status code.\n\t//\n\t// send user as it is or make use of any json valid golang type,\n\t// like the iris.Map{\"username\" : user.Username}.\n\tctx.JSON(iris.StatusOK, user)\n}\n\nfunc saveUserHandler(ctx *iris.Context) {\n\t// your code here...\n}\n```\n\n### Reload on source code changes\n\n```sh\n$ go get -u github.com/kataras/rizla\n$ cd $GOPATH/src/mywebapp\n$ rizla main.go\n```\n\n### Reload templates on each incoming request\n\n```go\napp.Adapt(view.HTML(\"./views\", \".html\").Reload(true))\n```\n\n\nFAQ \u0026 Documentation\n-----------\n\n \u003ca href=\"https://github.com/iris-framework/iris/tree/v6/_examples#table-of-contents\"\u003e\u003cimg align=\"right\" width=\"125\" src=\"https://raw.githubusercontent.com/iris-contrib/website/gh-pages/assets/book/cover_4.jpg\"\u003e\u003c/a\u003e\n\n1. [Getting Started with Go+Iris](http://gopherbook.iris-go.com)\n\n2. Official small but practical [examples](https://github.com/iris-framework/iris/tree/v6/_examples#table-of-contents)\n\n3. Navigate through [community examples](https://github.com/iris-contrib/examples) too\n\n4. [Creating A URL Shortener Service Using Go, Iris, and Bolt](https://medium.com/@kataras/a-url-shortener-service-using-go-iris-and-bolt-4182f0b00ae7)\n\n5. [Godocs](https://godoc.org/gopkg.in/iris-framework/iris.v6) for deep documentation\n\n6. [HISTORY.md](https://github.com//iris-framework/iris/tree/v6/HISTORY.md) is your best friend, version migrations are released there\n\n\nI'll be glad to talk with you about **your awesome feature requests**, \nopen a new [discussion](http://support.iris-go.com), you will be heard!\n\n\nThird Party Middleware\n------------\n\nIris has its own middleware form of `func(ctx *iris.Context)` but it's also compatible with all `net/http` middleware forms using [iris.ToHandler](https://github.com/iris-contrib/middleware/blob/master/cors/cors.go#L33), i.e Negroni's middleware form of `func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)`.\n\nHere is a small list of Iris compatible middleware, I'm sure you can find more:\n\n| Middleware | Author | Description |\n| -----------|--------|-------------|\n| [binding](https://github.com/mholt/binding) | [Matt Holt](https://github.com/mholt) | Data binding from HTTP requests into structs |\n| [cloudwatch](https://github.com/cvillecsteele/negroni-cloudwatch) | [Colin Steele](https://github.com/cvillecsteele) | AWS cloudwatch metrics middleware |\n| [csp](https://github.com/awakenetworks/csp) | [Awake Networks](https://github.com/awakenetworks) | [Content Security Policy](https://www.w3.org/TR/CSP2/) (CSP) support |\n| [delay](https://github.com/jeffbmartinez/delay) | [Jeff Martinez](https://github.com/jeffbmartinez) | Add delays/latency to endpoints. Useful when testing effects of high latency |\n| [New Relic Go Agent](https://github.com/yadvendar/negroni-newrelic-go-agent) | [Yadvendar Champawat](https://github.com/yadvendar) | Official [New Relic Go Agent](https://github.com/newrelic/go-agent) (currently in beta)  |\n| [gorelic](https://github.com/jingweno/negroni-gorelic) | [Jingwen Owen Ou](https://github.com/jingweno) | New Relic agent for Go runtime |\n| [JWT Middleware](https://github.com/auth0/go-jwt-middleware) | [Auth0](https://github.com/auth0) | Middleware checks for a JWT on the `Authorization` header on incoming requests and decodes it|\n| [logrus](https://github.com/meatballhat/negroni-logrus) | [Dan Buch](https://github.com/meatballhat) | Logrus-based logger |\n| [onthefly](https://github.com/xyproto/onthefly) | [Alexander Rødseth](https://github.com/xyproto) | Generate TinySVG, HTML and CSS on the fly |\n| [permissions2](https://github.com/xyproto/permissions2) | [Alexander Rødseth](https://github.com/xyproto) | Cookies, users and permissions |\n| [prometheus](https://github.com/zbindenren/negroni-prometheus) | [Rene Zbinden](https://github.com/zbindenren) | Easily create metrics endpoint for the [prometheus](http://prometheus.io) instrumentation tool |\n| [render](https://github.com/unrolled/render) | [Cory Jacobsen](https://github.com/unrolled) | Render JSON, XML and HTML templates |\n| [RestGate](https://github.com/pjebs/restgate) | [Prasanga Siripala](https://github.com/pjebs) | Secure authentication for REST API endpoints |\n| [secure](https://github.com/unrolled/secure) | [Cory Jacobsen](https://github.com/unrolled) | Middleware that implements a few quick security wins |\n| [stats](https://github.com/thoas/stats) | [Florent Messa](https://github.com/thoas) | Store information about your web application (response time, etc.) |\n| [VanGoH](https://github.com/auroratechnologies/vangoh) | [Taylor Wrobel](https://github.com/twrobel3) | Configurable [AWS-Style](http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html) HMAC authentication middleware |\n| [xrequestid](https://github.com/pilu/xrequestid) | [Andrea Franz](https://github.com/pilu) | Middleware that assigns a random X-Request-Id header to each request |\n| [digits](https://github.com/bamarni/digits) | [Bilal Amarni](https://github.com/bamarni) | Middleware that handles [Twitter Digits](https://get.digits.com/) authentication |\n\nFeel free to put up a [PR](https://github.com/iris-contrib/middleware) your middleware!\n\n\u003c!-- \n\nFAQ\n-----------\n\n\u003cp\u003e\n\n\n\n\u003c/p\u003e\n\n\u003e Q: OK Iris is really fast, but my current website does not need that performance at the moment, are there other reasons to move into Iris?\n\n\nIris is fully vendored. That means it is independent of any API changes in the used libraries and **will work seamlessly in the future**!\n\nThe size of the executable file is a critical part of the Application Deployment Process.\n\nTwo very simple identical applications, the first was written with `iris` and the second with a simple golang router.\n\n - _iris_ had `8.505 KB` overall file size\n - _gin_ had `9.029 KB` overall file size\n - _net/http_ had produced an executable file with `5.380 KB` size.\n\n\n\u003e Iris has built'n support for the most of the features that you will use to craft your perfect web application, while the golang router(gin \u0026 httprouter alone) doesn't. Imagine what would happened if the simple app we created would use `sessions`, `websockets`, `view engine`... I tested that too, `gin` and `net/http` had produced the x3 of their original size, **while `iris application`' overall executable filesize remained stable**!\n\n\n**Applications that are written using Iris produce smaller file size even if they use more features** than a simple router library!\n\n\nIris always follows the latest trends and best practices. Iris is the **Secret To Staying One Step Ahead of Your Competition**.\n\n\nIris is **a high-performance** tool, but it doesn't stops there. Performance depends on your application too, **Iris helps you to make the right choices** on every step.\n\n**Familiar** and easy **API**. Sinatra-like REST API.\n\nContains examples and documentation for all its features.\n\nIris is a `low-level access` web framework, you always know what you're doing.\n\nYou'll **never miss a thing** from `net/http`, but if you do on some point, no problem because Iris is fully compatible with stdlib, you still have access to `http.ResponseWriter` and `http.Request`, you can adapt any third-party middleware of form `func(http.ResponseWriter, *http.Request, next http.HandlerFunc)` as well.\n\nIris is a community-driven project, **you suggest and I code**.\n\nUnlike other repositories, this one is **very active**. When you post an issue, you get an answer at the next couple of minutes(hours at the worst). If you find a bug, **I am obliged to fix** that on the same day.\n\n\nClick the below animation to see by your self what people, like you, say about Iris.\n\n\u003ca href=\"https://www.youtube.com/watch?v=jGx0LkuUs4A\"\u003e\n\u003cimg src=\"https://github.com/iris-contrib/website/raw/gh-pages/assets/gif_link_to_yt2.gif\" alt=\"What people say\" /\u003e\n\u003c/a\u003e\n\n\n\n\u003e Q: Why no `serverless`?\n\nNew web developers are so enthusiastic about the idea of `serverless` and `AWS`. Most of the experienced developers we already know that we shouldn't use these things for our critical parts of our application.\n\n\n**`Serverless and AWS` Are Wonderful—Until They Go Wrong.**  There was a flash-point (at 28 February of 2017) where the 'internet was offline' and most of the sites, including isitdownrightnow.com,  were down or operated very slow! Why? Because of `serverless` and `AmazonS3`.\nPlease think twice before moving your code into `serverless`, **instead, use web frameworks that are created for servers that you control**, i.e Iris.\n\nProof of concept:\n\n- [Washington Post](https://www.washingtonpost.com/news/the-switch/wp/2017/02/28/why-a-whole-slew-of-websites-are-suddenly-down-or-working-slowly)\n- [CNN](http://money.cnn.com/2017/02/28/technology/amazon-web-services-outages/index.html)\n- [CNET](https://www.cnet.com/news/no-the-internet-is-not-broken-amazon-web-services-is-just-having-issues/?ftag=COS-05-10-aa0a\u0026linkId=34980800)\n- [MIT Technology Review](https://www.technologyreview.com/s/603738/centralized-web-services-are-wonderful-until-they-go-wrong/?_ga=1.82562070.1263144274.1488319022)\n- [GolangNews](https://golangnews.com/stories/1835-serverless-is-wonderfuluntil-they-go-wrong.)\n\n\n\n\n\nExplore [these questions](http://support.iris-go.com/) and join to our [community chat][Chat]!\n\n--\u003e\n\nTesting\n------------\n\nThe `httptest` package is a simple Iris helper for the httpexpect, a new library for End-to-end HTTP and REST API testing for Go.\n\nYou can find tests by navigating to the source code,\ni.e:\n\n- [context_test.go](https://github.com/iris-framework/iris/blob/v6/context_test.go)\n- [handler_test.go](https://github.com/iris-framework/iris/blob/v6/handler_test.go)\n- [policy_gorillamux_test.go](https://github.com/iris-framework/iris/blob/v6/policy_gorillamux_test.go)\n- [policy_httprouter_test.go](https://github.com/iris-framework/iris/blob/v6/policy_httprouter_test.go)\n- [policy_nativerouter_test.go](https://github.com/iris-framework/iris/blob/v6/policy_nativerouter_test.go)\n- [policy_routerwrapper_test.go](https://github.com/iris-framework/iris/blob/v6/policy_routerwrapper_test.go)\n- [policy_sessions_test.go](https://github.com/iris-framework/iris/blob/v6/policy_sessions_test.go)\n- [response_writer_test.go](https://github.com/iris-framework/iris/blob/v6/response_writer_test.go)\n- [route_test.go](https://github.com/iris-framework/iris/blob/v6/route_test.go)\n- [status_test.go](https://github.com/iris-framework/iris/blob/v6/status_test.go)\n- [transaction_test.go](https://github.com/iris-framework/iris/blob/v6/transaction_test.go)\n- [serializer_test.go](https://github.com/iris-framework/iris/blob/v6/serializer_test.go)\n\nA simple test is located to [./_examples/advanced/httptest/main_test.go](https://github.com/iris-framework/iris/blob/v6/_examples/advanced/httptest/main_test.go)\n\nPhilosophy\n------------\n\nThe Iris philosophy is to provide robust tooling for HTTP, making it a great solution for single page applications, web sites, hybrids, or public HTTP APIs. Keep note that, today, iris is faster than nginx itself.\n\nIris does not force you to use any specific ORM or template engine. Iris is routerless which means you can adapt any router you like, [httprouter](https://github.com/iris-framework/iris/blob/v6/_examples/beginner/routes-using-httprouter/main.go) is the fastest, [gorillamux](https://github.com/iris-framework/iris/blob/v6/_examples/beginner/routes-using-gorillamux/main.go) has more features. With support for the most used template engines (5), you can quickly craft the perfect application.\n\nContributors\n------------\n\nThis is the list of the original contributors. Some of them are missing! Please help us to update it.\n\nIf you feel that you made any significant contribution to the project, feel free to add your name to this list.\n\n* @kataras\n* @p4tin\n* @wsantos\n* @Mikoj\n* @keuller\n* @thesyncim\n\nLicense\n------------\n\nUnless otherwise noted, the source files are distributed\nunder the MIT License found in the [LICENSE file](LICENSE).\n\nNote that some optional components that you may use with Iris requires\ndifferent license agreements.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firis-framework%2Firis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firis-framework%2Firis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firis-framework%2Firis/lists"}