Iris
The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio :rocket:
Install / Use
/learn @kataras/IrisREADME
<a href="https://iris-go.com"><img src="https://iris-go.com/iris-terminal-55.png" width="50px" height="50px" style="margin-bottom: -5px" ></a> Iris Web Framework <a href="README_GR.md"><img width="20px" src="https://iris-go.com/static/images/flag-greece.svg" /> <a href="README_JA.md"><img width="20px" height="20px" src="https://iris-go.com/static/images/flag-japan.svg" /></a> </a> <a href="README_FR.md"><img width="20px" src="https://iris-go.com/static/images/flag-france.svg" /></a> <a href="README_ZH_HANT.md"><img width="20px" src="https://iris-go.com/static/images/flag-taiwan.svg" /></a> <a href="README_ZH_HANS.md"><img width="20px" src="https://iris-go.com/static/images/flag-china.svg" /></a> <a href="README_ES.md"><img width="20px" src="https://iris-go.com/static/images/flag-spain.png" /></a> <a href="README_FA.md"><img width="20px" src="https://iris-go.com/static/images/flag-iran.svg" /></a> <a href="README_RU.md"><img width="20px" src="https://iris-go.com/static/images/flag-russia.svg" /></a> <a href="README_KO.md"><img width="20px" src="https://iris-go.com/static/images/flag-south-korea.svg?v=12" /></a> <a href="README_PT_BR.md"><img width="20px" height="20px" src="https://iris-go.com/static/images/flag-brazil.svg" /></a> <a href="README_VN.md"><img width="20px" height="20px" src="https://iris-go.com/static/images/flag-vietnam.svg" /></a>
<!--[](https://app.fossa.io/projects/git%2Bgithub.com%2Fkataras%2Firis?ref=badge_shield)-->
<!--[](https://goreportcard.com/report/github.com/kataras/iris)--><!--[](https://pkg.go.dev/github.com/kataras/iris/v12@v12.2.11)--> <!-- [](https://github.com/kataras/iris/releases) -->
🎁 Iris is a fast, simple yet fully featured and very efficient web framework for Go - the perfect gift for developers this holiday season!
✨ It provides a beautifully expressive and easy to use foundation for your next website or API, wrapped with care and decorated with powerful features.
🌟 Learn what others saying about Iris and star this open-source project
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
app.Use(iris.Compression)
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Happy New Year <strong>%s</strong>! 🎅", "World")
})
app.Listen(":8080")
}
<!-- <details><summary>More with simple Handler</summary>
```go
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](https://github.com/kataras/iris/blob/main/_examples/routing) for more!
</details>
<details><summary>Handler with custom input and output arguments</summary>
[](https://twitter.com/iris_framework/status/1234783655408668672)
> Interesting? Read the [examples](https://github.com/kataras/iris/blob/main/_examples/dependency-injection).
</details>
<details><summary>Party Controller (NEW)</summary>
> Head over to the [full running example](https://github.com/kataras/iris/blob/main/_examples/routing/party-controller)!
</details>
<details><summary>MVC</summary>
```go
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](_examples/mvc)!
</details>
<details><summary>API Guide <strong>HOT</strong></summary>
```go
package main
import (
// [other packages...]
"github.com/kataras/iris/v12"
)
func main() {
iris.NewGuide().
AllowOrigin("*").
Compression(true).
Health(true, "development", "kataras").
Timeout(0, 20*time.Second, 20*time.Second).
Middlewares(basicauth.New(...)).
Services(
// NewDatabase(),
// NewPostgresRepositoryRegistry,
// NewUserService,
).
API("/users", new(UsersAPI)).
Listen(":80")
}
```
</details>
<br/>
-->
As one Go developer once said, Iris got you covered all-round and standing strong over the years ⭐
Some of the features Iris offers:
- HTTP/2 (Push, even Embedded data)
- Middleware (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
- API Versioning
- Model-View-Controller
- Websockets
- gRPC
- Auto-HTTPS
- Builtin support for ngrok to put your app on the internet, the fastest way
- Unique Router with dynamic path as parameter with standard types like :uuid, :string, :int... and the ability to create your own
- Compression
- View Engines (HTML, Django, Handlebars, Pug/Jade and more)
- Create your own File Server and host your own WebDAV server
- Cache
- Localization (i18n, sitemap)
- Sessions
- Rich Responses (HTML, Text, Markdown, XML, YAML, Binary, JSON, JSONP, Protocol Buffers, MessagePack, Content Negotiation, Streaming, Server-Sent Events and more)
- Response Compression (gzip, deflate, brotli, snappy, s2)
- Rich Requests (Bind URL Query, Headers, Form, Text, XML, YAML, Binary, JSON, Validation, Protocol Buffers, MessagePack and more)
- Dependency Injection (MVC, Handlers, API Routers)
- Testing Suite
- And the most important... you get fast answers and support from the 1st day until now - that's six full years!
👑 <a href="https://iris-go.com/donate">Supporters</a>
With your help, we can improve Open Source web development for everyone!
<p> <a href="https://github.com/getsentry"><img src="https://avatars1.githubusercontent.com/u/1396951?v=4" alt="getsentry" title="getsentry" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/github"><img src="https://avatars1.githubusercontent.com/u/9919?v=4" alt="github" title="github" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/lensesio"><img src="https://avatars1.githubusercontent.com/u/11728472?v=4" alt="lensesio" title="lensesio" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/thepunterbot"><img src="https://avatars1.githubusercontent.com/u/111136029?v=4" alt="thepunterbot" title="thepunterbot" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/h4rdc0m"><img src="https://avatars1.githubusercontent.com/u/682256?v=4" alt="h4rdc0m" title="h4rdc0m" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/draFWM"><img src="https://avatars1.githubusercontent.com/u/5765340?v=4" alt="draFWM" title="draFWM" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/gf3"><img src="https://avatars1.githubusercontent.com/u/18397?v=4" alt="gf3" title="gf3" width="75" height="75" style="width:75px;max-width:75px;height:75px" /></a> <a href="https://github.com/trading-peter"><img src="https://avatars1.githubusercontent.com/u/11567985?v=4" alt="trading-peter" titl
