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 |