Irisは、高速でシンプルながらも完全機能を備えた、非常に効率的なGolangウェブアプリケーションフレームワークです。

次のウェブサイトやアプリケーションインターフェースのための表現豊かで使いやすい基盤を提供します。

Irisの特長

  • HTTP/2(プッシュ、埋め込まれたデータも含む)
  • ミドルウェア(アクセスログ、Basicauth、CORS、gRPC、Anti-Bot hCaptcha、JWT、MethodOverride、ModRevision、Monitor、PPROF、Ratelimit、Anti-Bot reCaptcha、Recovery、RequestID、Rewrite)
  • API バージョニング
  • モデル-ビュー-コントローラー
  • Websockets
  • gRPC
  • 自動 HTTPS
  • アプリケーションを最速でオンラインにするための組込みのngrok サポート
  • 動的なパスパラメータを持つユニークなルーターで、:uuid、:string、:int などの標準型のサポート、およびカスタムルーターの作成
  • 圧縮
  • ビューエンジン(HTML、Django、Handlebars、Pug/Jade など)
  • 独自のファイルサーバーの作成と独自のWebDAVサーバーのホスト
  • キャッシュ
  • ローカライゼーション(i18n、サイトマップ)
  • セッション
  • 豊富なレスポンス(HTML、テキスト、Markdown、XML、YAML、バイナリ、JSON、JSONP、Protocol Buffers、MessagePack、コンテンツネゴシエーション、ストリーム、サーバー送信イベントなど)
  • レスポンスの圧縮(gzip、deflate、brotli、snappy、s2)
  • 豊富なリクエスト(URL クエリ、ヘッダー、フォーム、テキスト、XML、YAML、バイナリ、JSON、検証、Protocol Buffers、MessagePack などのバインド)
  • 依存性注入(MVC、ハンドラ、API ルーター)
  • テストスイート

デモ

package main

// パッケージのインポート
import "github.com/kataras/iris/v12"

func main() {
  // Iris インスタンスの定義
  app := iris.New()
  // gzip 圧縮ミドルウェアの使用
  app.Use(iris.Compression)

  // ルーターのセットアップ
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Hello <strong>%s</strong>!", "World")
  })

  // ポートでリッスン
  app.Listen(":8080")
}

パフォーマンステスト

整数として動的パラメータを持つ 200,000 回のリクエストを送信し、リクエストボディとして JSON を送信し、レスポンスとして JSON を受信します。

フレームワーク 開発言語 秒間リクエスト数 レイテンシ スループット 完了時間
Iris Go 238,954 521.69us 64.15MB 0.84s
Gin Go 229,665 541.96us 62.86MB 0.87s
Chi Go 228,072 545.78us 62.61MB 0.88s
Echo Go 224,491 553.84us 61.70MB 0.89s
Martini Go 198,166 627.46us 54.47MB 1.01s
Kestrel C# 163,486 766.90us 47.42MB 1.23s
Buffalo Go 102,478 1.22ms 28.14MB 1.95s
Koa Javascript 48,425 2.56ms 15.39MB 4.14s
Express Javascript 23,622 5.25ms 9.04MB 8.41s