The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio 🚀
Go to file
2022-05-07 12:43:18 +03:00
_benchmarks Thanks @ky2s and @unixedia ❤️ ❤️ 2020-10-01 17:32:09 +03:00
_examples include iris version, build time & revision to the startuplog when enabled 2022-05-04 13:52:51 +03:00
_proposals add a new _proposals folder and a silly idea 2022-04-10 01:08:11 +03:00
.github minor: ci 2022-04-18 11:01:47 +03:00
apps new Timeout, TimeoutMessage configuration fields and apps.OnApplicationRegistered listener 2021-12-09 14:44:03 +02:00
auth complete the godoc for auth.go 2022-04-10 00:19:04 +03:00
cache add IsDebug() shortcut method 2020-09-10 16:20:19 +03:00
context fix #1877 2022-04-23 23:26:25 +03:00
core include iris version, build time & revision to the startuplog when enabled 2022-05-04 13:52:51 +03:00
hero add a new Party.EnsureStaticBindings method - read HISTORY.md 2022-03-12 12:32:27 +02:00
httptest set min version on tls configuration even on the tests and examples 2022-03-10 21:48:05 +02:00
i18n :) 2021-01-09 05:41:20 +02:00
macro add some api helpers 2022-05-05 02:46:15 +03:00
middleware modrevision:minor 2022-04-10 01:25:19 +03:00
mvc publish v12.2.0-alpha6 2022-02-18 22:19:33 +02:00
sessions fix #1877 2022-04-23 23:26:25 +03:00
versioning minor 2021-01-09 04:11:46 +02:00
view fix #1876 2022-04-23 13:18:54 +03:00
websocket fix #1856 2022-03-17 22:43:04 +02:00
x minor 2022-05-05 02:49:03 +03:00
.deepsource.toml add a new _proposals folder and a silly idea 2022-04-10 01:08:11 +03:00
.fossa.yml new Application.SetContextErrorHandler method 2022-04-13 01:00:53 +03:00
.gitattributes minor 2020-01-05 18:27:21 +02:00
.gitignore fix #1829 2021-12-31 14:55:20 +02:00
aliases.go add some api helpers 2022-05-05 02:46:15 +03:00
AUTHORS Update to version 8.5.5 | Read HISTORY.md 2017-11-02 05:54:33 +02:00
cli.go :) 2021-01-09 05:41:20 +02:00
CODE_OF_CONDUCT.md Update to version 8.5.5 | Read HISTORY.md 2017-11-02 05:54:33 +02:00
configuration_test.go Add Configuration.RemoteAddrHeadersForce as requested at #1567 and change RemoteAddrHeaders from map to string slice 2020-07-26 14:37:30 +03:00
configuration.go new Application.SetContextErrorHandler method 2022-04-13 01:00:53 +03:00
CONTRIBUTING.md update faq, contributing and go workflow 2019-11-20 02:51:16 +02:00
doc.go version 12.2.0-beta1 2022-04-13 02:39:09 +03:00
FAQ.md minor 2022-01-06 18:49:11 +02:00
go.mod upgrade dependencies 2022-05-05 00:04:15 +03:00
go.sum upgrade dependencies 2022-05-05 00:04:15 +03:00
HISTORY_ES.md reorganization of _examples and add some new examples such as iris+groupcache+mysql+docker 2020-06-07 15:26:06 +03:00
HISTORY.md add '{date}' dynamic path parameter type 2022-04-21 02:17:09 +03:00
iris.go include iris version, build time & revision to the startuplog when enabled 2022-05-04 13:52:51 +03:00
LICENSE minor 2022-01-06 18:49:11 +02:00
NOTICE first release of SSO package and more examples 2022-03-28 14:00:26 +03:00
README_ES.md minor 2021-02-19 09:58:29 +02:00
README_FA.md fix #1856 2022-03-17 22:43:04 +02:00
README_FR.md minor 2021-02-19 09:58:29 +02:00
README_GR.md minor 2022-01-06 18:49:11 +02:00
README_KO.md minor 2021-02-19 09:58:29 +02:00
README_RU.md minor 2021-02-19 09:58:29 +02:00
README_ZH.md minor 2022-01-06 18:49:11 +02:00
README.md we've reached 193 sponsors! thank you ❤️ 2022-05-07 12:43:18 +03:00
SECURITY.md Create SECURITY.md 2021-09-14 21:40:09 +03:00
VERSION accesslog middleware: add total bytes received and sent 2020-09-08 13:44:50 +03:00

Black Lives Matter

News

This is the under-development branch - contains the latest and greatest features. Stay tuned for the upcoming release v12.2.0. Looking for a more stable release? Head over to the v12.1.8 branch instead.

Try the official Iris Command Line Interface today!

Due to the large workload, there may be delays in answering your questions.

Iris Web Framework

build status view examples chat donate

Iris is a fast, simple yet fully featured and very efficient web framework for Go.

It provides a beautifully expressive and easy to use foundation for your next website or API.

Simple Handler
package main

import "github.com/kataras/iris/v12"

type (
  request struct {
    Firstname string `json:"firstname"`
    Lastname  string `json:"lastname"`
  }

  response struct {
    ID      string `json:"id"`
    Message string `json:"message"`
  }
)

func main() {
  app := iris.New()
  app.Handle("PUT", "/users/{id:uuid}", updateUser)
  app.Listen(":8080")
}

func updateUser(ctx iris.Context) {
  id, _ := ctx.Params().Get("id")

  var req request
  if err := ctx.ReadJSON(&req); err != nil {
    ctx.StopWithError(iris.StatusBadRequest, err)
    return
  }

  resp := response{
    ID:      id,
    Message: req.Firstname + " updated successfully",
  }
  ctx.JSON(resp)
}

Read the routing examples for more!

Handler with custom input and output arguments

https://github.com/kataras/iris/blob/master/_examples/dependency-injection/basic/main.go

Interesting? Read the examples.

Party Controller (NEW)

Head over to the full running example!

MVC
package main

import (
  "github.com/kataras/iris/v12"
  "github.com/kataras/iris/v12/mvc"
)

type (
  request struct {
    Firstname string `json:"firstname"`
    Lastname  string `json:"lastname"`
  }

  response struct {
    ID      uint64 `json:"id"`
    Message string `json:"message"`
  }
)

func main() {
  app := iris.New()
  mvc.Configure(app.Party("/users"), configureMVC)
  app.Listen(":8080")
}

func configureMVC(app *mvc.Application) {
  app.Handle(new(userController))
}

type userController struct {
  // [...dependencies]
}

func (c *userController) PutBy(id uint64, req request) response {
  return response{
    ID:      id,
    Message: req.Firstname + " updated successfully",
  }
}

Want to see more? Navigate through mvc examples!

Learn what others saying about Iris and star this open-source project to support its potentials.

Benchmarks: Jul 18, 2020 at 10:46am (UTC)

👑 Supporters

With your help, we can improve Open Source web development for everyone!

Donations from China are now accepted!

lensesio trading-peter gf3 basilarchia xiaozhuai AlbinoGeek celsosz TechMaster altafino hengestone thomasfr li3p sumjoe se77en International Juanses ansrivas vincent-li lexrus sascha11110 derReineke Sirisap22 clacroix mubariz-ahmed ixalender rodrigoghm tuhao1020 sankethpb mihado cshum lpintes wahyuief icibiri dtrifonov kilarusravankumar mmckeen75 IwateKyle shadowfiga DmarshalTU DavidShaw lfbos Cesar srinivasganti olaf-lexemo skurtz97 marcmmx jingtianfeng leandrobraga macropas xytis saz59 coderperu Little-YangYang xvalen pr123 pitexplore odas0r KKP4 ukitzmann Lernakow syrm Major2828 MatejLach ElNovi siriushaha spazzymoto aprinslo1 kyoukhana mark2b t6tg kukaki oshirokazuhide hzxd vladimir-petukhov-sr nasoma mizzlespot guanzi008 ichenhe mnievesco AwsIT agent3bood vuhoanglam TianJIANG BlackHole1 Jude-X remopavithran motogo rhernandez-itemsoft KevinZhouRafael carlos-enginner svirmi saleebm mulyawansentosa rapita kana99 fenriz07 paulxu21 gnosthi mattbowen hdezoscar93 Neulhan knavels liheyuan MihaiPopescu1985 lingyingtan baoch254 risallaw NguyenPhuoc edwindna2 Ubun1 bunnycodego vguhesan pitt134 leki75 yonson2 sbenimeli khasanovrs lipatti cnzhangquan unixedia rxrw SamuelNeves qiuzhanghua Laotanling iantuan draFWM civicwar bastengao goten002 ozfive acdias b2cbd rfunix SergeShin martinlindhe netbaalzovf mtrense blackHoleNgc1277 lfaynman rbondi gog200921 crashCoder RainerGevers nikharsaxena NA aaxx statik ArturWierzbicki thejones dochoaj vcruzato hazmi-e205 wangbl11 shyyawn CSRaghunandan evan mblandr letmestudy primadi ky2s grassshrimp GeorgeFourikis edsongley jtgoral L-M-Sherlock wofka72 xsokev ndimorle lauweliam oleang michalsz Curtman claudemuller SridarDhandapani midhubalan rosales-stephanie opusmagna b4zz4r juanxme galois-tnp fangli tejzpr theantichris tuxaanand nguyentamvinhlong bobmcallan geoshan narven raphael-brand Tang634724712 HieuLsw carlosmoran092 yangxianglong

📖 Learning Iris

Create a new project

$ mkdir myapp
$ cd myapp
$ go mod init myapp
$ go get github.com/kataras/iris/v12@master # or @v12.2.0-beta1
Install on existing project
$ cd myapp
$ go get github.com/kataras/iris/v12@master

Run

$ go mod tidy -compat=1.18
$ go run .

Iris contains extensive and thorough documentation making it easy to get started with the framework.

For a more detailed technical documentation you can head over to our godocs. And for executable code you can always visit the ./_examples repository's subdirectory.

Do you like to read while traveling?

Book cover

follow author on twitter

follow Iris web framework on twitter

follow Iris web framework on facebook

You can request a PDF and online access of the Iris E-Book (New Edition, future v12.2.0+) today and be participated in the development of Iris.

🙌 Contributing

We'd love to see your contribution to the Iris Web Framework! For more information about contributing to the Iris project please check the CONTRIBUTING.md file.

List of all Contributors

🛡 Security Vulnerabilities

If you discover a security vulnerability within Iris, please send an e-mail to iris-go@outlook.com. All security vulnerabilities will be promptly addressed.

📝 License

This project is licensed under the BSD 3-clause license, just like the Go project itself.

The project name "Iris" was inspired by the Greek mythology.