Convert Figma logo to code with AI

kataras logoiris

The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio :rocket:

25,214
2,470
25,214
120

Top Related Projects

79,451

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.

30,095

High performance, minimalist Go web framework

34,333

⚡️ Express inspired web framework written in Go

20,972

Package gorilla/mux is a powerful HTTP router and URL matcher for building Go web servers with 🦍

A high performance HTTP request router that scales well

21,778

Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http

Quick Overview

Iris is a fast, simple, and efficient web framework for Go. It provides a robust set of features for building web applications and APIs, with a focus on high performance and ease of use. Iris is designed to be expressive and flexible, allowing developers to create powerful web applications quickly.

Pros

  • High performance and low memory footprint
  • Extensive feature set, including WebSocket support, MVC architecture, and dependency injection
  • Active community and regular updates
  • Comprehensive documentation and examples

Cons

  • Steeper learning curve compared to some simpler Go web frameworks
  • Some users report occasional breaking changes between versions
  • Less widespread adoption compared to more established frameworks like Gin or Echo

Code Examples

  1. Basic HTTP server:
package main

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

func main() {
    app := iris.New()
    app.Get("/", func(ctx iris.Context) {
        ctx.JSON(iris.Map{"message": "Hello, World!"})
    })
    app.Listen(":8080")
}
  1. Route parameters:
app.Get("/users/{id:uint64}", func(ctx iris.Context) {
    id, _ := ctx.Params().GetUint64("id")
    ctx.Writef("User ID: %d", id)
})
  1. Middleware example:
app.Use(func(ctx iris.Context) {
    ctx.Application().Logger().Infof("New request: %s", ctx.Path())
    ctx.Next()
})

Getting Started

To start using Iris, follow these steps:

  1. Install Iris:

    go get github.com/kataras/iris/v12@latest
    
  2. Create a new Go file (e.g., main.go) and add the following code:

    package main
    
    import "github.com/kataras/iris/v12"
    
    func main() {
        app := iris.New()
        app.Get("/", func(ctx iris.Context) {
            ctx.HTML("<h1>Welcome to Iris!</h1>")
        })
        app.Listen(":8080")
    }
    
  3. Run your application:

    go run main.go
    
  4. Open your browser and visit http://localhost:8080 to see your Iris application in action.

Competitor Comparisons

79,451

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.

Pros of Gin

  • Lightweight and fast performance
  • Simple and intuitive API
  • Large community and ecosystem

Cons of Gin

  • Less built-in features compared to Iris
  • Limited middleware options out-of-the-box

Code Comparison

Gin:

r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{"message": "pong"})
})
r.Run()

Iris:

app := iris.New()
app.Get("/ping", func(ctx iris.Context) {
    ctx.JSON(iris.Map{"message": "pong"})
})
app.Listen(":8080")

Key Differences

  • Iris offers more built-in features and middleware options
  • Gin focuses on simplicity and performance
  • Iris has a steeper learning curve but provides more flexibility
  • Gin has a larger community and more third-party packages

Performance

Both frameworks are known for their high performance, but Gin is often considered slightly faster in benchmarks.

Documentation

Gin has more extensive and well-maintained documentation, making it easier for newcomers to get started.

Community Support

Gin has a larger and more active community, resulting in more resources, tutorials, and third-party packages available.

30,095

High performance, minimalist Go web framework

Pros of Echo

  • Simpler and more lightweight framework
  • Better documentation and community support
  • Faster performance in some benchmarks

Cons of Echo

  • Fewer built-in features compared to Iris
  • Less flexibility in routing and middleware configuration
  • Smaller ecosystem of third-party extensions

Code Comparison

Echo:

e := echo.New()
e.GET("/", func(c echo.Context) error {
    return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":1323"))

Iris:

app := iris.New()
app.Get("/", func(ctx iris.Context) {
    ctx.WriteString("Hello, World!")
})
app.Listen(":8080")

Both frameworks offer similar syntax for basic routing and handling, but Iris provides more built-in features and configuration options out of the box. Echo focuses on simplicity and performance, while Iris aims to be a more comprehensive framework with additional functionality.

Echo is generally easier to learn and use for beginners, while Iris offers more advanced features for complex applications. The choice between the two depends on the specific requirements of your project and personal preferences.

34,333

⚡️ Express inspired web framework written in Go

Pros of Fiber

  • Faster performance and lower memory usage
  • Simpler API with less boilerplate code
  • More active development and frequent updates

Cons of Fiber

  • Less mature and stable compared to Iris
  • Fewer built-in features and middleware options
  • Smaller community and ecosystem

Code Comparison

Iris:

app := iris.New()
app.Get("/", func(ctx iris.Context) {
    ctx.JSON(iris.Map{"message": "Hello, World!"})
})
app.Listen(":8080")

Fiber:

app := fiber.New()
app.Get("/", func(c *fiber.Ctx) error {
    return c.JSON(fiber.Map{"message": "Hello, World!"})
})
app.Listen(":8080")

Both Iris and Fiber are popular web frameworks for Go, offering high performance and ease of use. Fiber is known for its simplicity and speed, making it attractive for developers who prioritize performance. However, Iris has a longer history and offers more built-in features, which can be beneficial for complex applications.

The code comparison shows that both frameworks have similar syntax for basic routing and JSON responses. Fiber's approach is slightly more concise, aligning with its goal of simplicity. Ultimately, the choice between Iris and Fiber depends on specific project requirements and developer preferences.

20,972

Package gorilla/mux is a powerful HTTP router and URL matcher for building Go web servers with 🦍

Pros of Mux

  • Lightweight and focused on routing, allowing for more flexibility in overall application structure
  • Well-established and widely used in the Go community, with extensive documentation and community support
  • Simple and straightforward API, making it easy to learn and use

Cons of Mux

  • Lacks built-in middleware and additional features, requiring integration with other libraries for full-stack development
  • No built-in view rendering or template engine support
  • Less performance optimization compared to Iris for high-concurrency scenarios

Code Comparison

Mux:

r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
r.HandleFunc("/products", ProductsHandler)
http.ListenAndServe(":8000", r)

Iris:

app := iris.New()
app.Get("/", HomeHandler)
app.Get("/products", ProductsHandler)
app.Listen(":8000")

Both Mux and Iris provide routing capabilities for Go web applications. Mux focuses primarily on routing, offering a simple and flexible approach. Iris, on the other hand, is a more comprehensive web framework with additional features like built-in middleware, view rendering, and websocket support.

Mux is ideal for developers who prefer a minimalist approach and want to build their stack from separate components. Iris suits those looking for an all-in-one solution with performance optimizations for high-concurrency scenarios.

A high performance HTTP request router that scales well

Pros of httprouter

  • Lightweight and minimalistic, focusing solely on high-performance routing
  • Extremely fast and efficient, optimized for high-load scenarios
  • Easy to integrate with existing Go standard library components

Cons of httprouter

  • Limited built-in functionality compared to full-featured web frameworks
  • Lacks middleware support out of the box
  • May require additional libraries for more complex web applications

Code Comparison

httprouter:

router := httprouter.New()
router.GET("/", Index)
router.GET("/hello/:name", Hello)

log.Fatal(http.ListenAndServe(":8080", router))

Iris:

app := iris.New()
app.Get("/", Index)
app.Get("/hello/{name}", Hello)

app.Listen(":8080")

Summary

httprouter is a lightweight, high-performance HTTP request router for Go. It excels in speed and efficiency but offers limited built-in features. Iris, on the other hand, is a more comprehensive web framework with additional functionality and middleware support.

httprouter is ideal for projects requiring fast, simple routing, while Iris is better suited for larger applications needing a full-featured framework. The choice between them depends on the specific requirements of your project and the level of abstraction you prefer.

21,778

Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http

Pros of fasthttp

  • Significantly faster performance and lower memory usage
  • Designed for high-concurrency scenarios
  • Provides low-level control over HTTP operations

Cons of fasthttp

  • Less feature-rich compared to Iris
  • Steeper learning curve due to its low-level nature
  • Fewer built-in middleware and extensions

Code Comparison

Iris:

app := iris.New()
app.Get("/", func(ctx iris.Context) {
    ctx.JSON(iris.Map{"message": "Hello, World!"})
})
app.Listen(":8080")

fasthttp:

func handler(ctx *fasthttp.RequestCtx) {
    ctx.SetContentType("application/json")
    ctx.SetBody([]byte(`{"message": "Hello, World!"}`))
}
fasthttp.ListenAndServe(":8080", handler)

Summary

fasthttp is a high-performance, low-level HTTP library focused on speed and efficiency. It's ideal for projects requiring maximum performance but may require more manual implementation of features. Iris, on the other hand, is a full-featured web framework that provides a higher level of abstraction and more built-in functionality, making it easier to develop complex web applications quickly. The choice between the two depends on the specific requirements of your project, balancing between raw performance and development convenience.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Project Update: Iris is Evolving 🌱

Dear Iris Community,

You might have noticed a recent lull in activity on the Iris repository. I want to assure you that this silence is not without reason. For the past 5-6 months, I've been diligently working on the next major release of Iris.

This upcoming version is poised to be a significant leap forward, fully embracing the Generics feature introduced in Go. We're not just stopping at Generics, though. Expect a suite of new features, enhancements, and optimizations that will elevate your development experience to new heights.

My journey with Go spans over 8 years, and with each year, my expertise and understanding of the language deepen. This accumulated knowledge is being poured into Iris, ensuring that the framework not only evolves with the language but also with the community's growing needs.

Stay tuned for more updates, and thank you for your continued support and patience. The wait will be worth it.

Warm regards,
Gerasimos (Makis) Maropoulos

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.

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

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

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("Hello <strong>%s</strong>!", "World")
  })

  app.Listen(":8080")
}

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!

👑 Supporters

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

getsentry github lensesio thepunterbot h4rdc0m draFWM gf3 trading-peter AlbinoGeek basilarchia sumjoe simpleittools xiaozhuai Remydeme celsosz linxcoder jnelle TechMaster janwebdev altafino jakoubek alekperos day0ng hengestone thomasfr code-chimp CetinBasoz International Juanses SometimesMage ansrivas boreevyuri brentwilson camilbinas ekobayong lexrus li3p madhu72 mosorize se77en tstangenberg vincent-li DavidShaw sascha11110 clichi2002 derReineke Sirisap22 primadi agoncecelia chrisliang12 zyu hobysmith pluja antonio-pedrazzini clacroix njeff3 ixalender mubariz-ahmed Cesar th31nitiate stgrosshh Didainius DmarshalTU IwateKyle Little-YangYang Major2828 MatejLach amritpal042 andrefiorot boomhut cshum dtrifonov gadokrisztian geordee guanting112 iantuan ichenhe rodrigoghm icibiri jewe11er jfloresremar jingtianfeng kilarusravankumar leandrobraga lfbos lpintes macropas marcmmx mark2b miguel-devs mihado mmckeen75 narven odas0r olaf-lexemo pitexplore pr123 rsousacode sankethpb wixregiga GeorgeFourikis saz59 shadowfiga siriushaha skurtz97 srinivasganti syrm tuhao1020 BlackHole1 L-M-Sherlock claudemuller keymanye wahyuief xuyan2018 xvalen xytis ElNovi IpastorSan KKP4 Lernakow ernestocolombo francisstephan pixelheresy rcapraro soiestad spkarason thanasolykos ukitzmann DanielKirkwood colinf simonproctor FernandoLangOFC Firdavs9512 Flammable-Duck Gepetdo Hongjian0619 JoeD Jude-X Kartoffelbot KevinZhouRafael KrishManohar Laotanling Longf99999 Lyansun MihaiPopescu1985 TBNilles ajanicij aprinslo1 Mohammed8960 NA Neulhan kyoukhana spazzymoto victorgrey ArishSultan ehayun kukaki oshirokazuhide t6tg 15189573255 AGPDev AnatolyUA AwsIT NguyenPhuoc Oka00 PaddyFrenchman RainerGevers Ramblestsad SamuelNeves Scorpio69t Serissa4000 TianJIANG Ubun1 WangYajun39 XinYoungCN YukinaMochizuki a112121788 acdias aeonsthorn agent3bood ajb-neodynamics-io alessandromarotta algobot76 algoflows angelaahhu anhxuanpham annieruci antoniejiao artman328 b2cbd baoch254 bastengao beytullahakyuz bjoroen blackHoleNgc1277 bunnycodego carlos-enginner centratelemedia chrismalek civicwar cnzhangquan cuong48d damiensy danlanxiaohei dextercai dfaugusto dkzhang dloprodu donam-givita dph0899 dvitale ec0629 edwindna2 ekiyooka ekofedriyanto eli-yip eljefedelrodeodeljefe fenriz07 ffelipelimao frenchmajesty gastropulgite geGao123 globalflea gloudx gnosthi gogoswift goten002 guanzi008 hdezoscar93 hieungm hieunmg homerious hzxd inyellowbus iuliancarnaru iysaleh jackptoke jackysywk jeff2go jeremiahyan joelywz kamolcu kana99 edsongley katsubushiken kattaprasanth keeio keval6706 khasanovrs kkdaypenny knavels kohakuhubo korowiov kostasvk lafayetteDan lbsubash leki75 lemuelroberto liheyuan lingyingtan linuxluigi lipatti maikelcoke marek-kuticka marman-hp mattbowen maxgozou maxgozzz mitas mizzlespot mkell43 mnievesco mo3lyana motogo mtrense mukunhao mulyawansentosa nasoma ngseiyu nikharsaxena nronzel odelanno onlysumitg xPoppa yesudeep ymonk yonson2 yshengliao ytxmobile98 yusong-offx zhenggangpku zou8944 SergeShin - BelmonduS Diewald cty4ka martinjanda evan hazmi-e205 jtgoral ky2s lauweliam ozfive paulcockrell paulxu21 pesquive petros9282 phil535 pitt134 poscard qiepeipei qiuzhanghua rapita rbondi relaera remopavithran rfunix rhernandez-itemsoft rikoriswandha risallaw robivictor rubiagatra rubyangxg rxrw saleebm sbenimeli sebyno seun-otosho shobhitsinghal77 solohiroshi su1gen sukiejosh suresh16671 svirmi terjelafton thiennguyen93 unixedia vadgun valsorym vguhesan vpiduri vrocadev vuhoanglam walter-wang martinlindhe mdamschen letmestudy michaelsmanley Curtman SridarDhandapani madrigaltenor opusmagna ShahramMebashar b4zz4r bobmcallan fangli galois-tnp mblandr midhubalan netbaalzovf oliverjosefzimmer peacememories talebisinan valkuere lfaynman ArturWierzbicki aaxx crashCoder derekslenk dochoaj evillgenius75 gog200921 mauricedcastro mwiater sj671 statik supersherm5 thejones CSRaghunandan ndimorle rosales-stephanie shyyawn vcruzato wangbl11 wofka72 geoshan juanxme nguyentamvinhlong yoru74 xsokev oleang michalsz pomland-94 tejzpr theantichris tuxaanand raphael-brand willypuzzle dmcbane malcolm-white-dti HieuLsw carlosmoran092 yangxianglong

📖 Learning Iris

Installation

The only requirement is the Go Programming Language.

Create a new project

$ mkdir myapp
$ cd myapp
$ go mod init myapp
$ go get github.com/kataras/iris/v12@latest # or @v12.2.11
Install on existing project
$ cd myapp
$ go get github.com/kataras/iris/v12@latest

Run

$ go mod tidy -compat=1.23 # -compat="1.23" for windows.
$ 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.