このプロジェクトについて
IrisはGo言語向けのウェブフレームワークです。READMEは英語で記述されており、現在のv12ラインと、計画中のv14リリースのプレビューについて説明しています。
v12で説明されているコア機能:
- サーバープッシュと組み込みデータを含むHTTP/2サポート。
- :uuid、:string、:intなどの標準的な型を持つ動的パスパラメータを受け入れ、カスタムパラメータ型を定義できるルーター。
- アクセスログ、基本認証、CORS、gRPC、hCaptchaおよびreCaptchaアンチボットチェック、JWT、メソッドオーバーライド、モニター、pprof、レート制限、リカバリ、リクエストID、書き換えなどの組み込みミドルウェア。
- APIバージョニング、Model-View-Controller(mvcパッケージ)、およびMVC、ハンドラー、APIルーター向けの依存関係注入。
- WebSockets、gRPC、および自動HTTPS。
- ローカルアプリをインターネットに公開するための組み込みngrokサポート。
- レスポンス圧縮(gzip, deflate, brotli, snappy, s2)およびCompressionミドルウェア。
- HTML、Django、Handlebars、Pug/Jadeを含むビューエンジン。
- カスタムファイルサーバーおよびWebDAVサーバー。
- キャッシュ、国際化(i18n, sitemap)、セッション、およびテストスイート。
- リッチなレスポンス:HTML、テキスト、Markdown、XML、YAML、バイナリ、JSON、JSONP、Protocol Buffers、MessagePack、コンテンツネゴシエーション、ストリーミング、サーバー送信イベント。
- リッチなリクエストバインディング:URLクエリ、ヘッダー、フォーム、テキスト、XML、YAML、バイナリ、JSON、バリデーション、Protocol Buffers、MessagePack。
- READMEのサンプルコードでは、iris.New()で作成された最小限のアプリ、app.Getによるルート登録、およびapp.Listen(":8080")が示されています。
READMEによると、_examplesディレクトリに285の例があり、コミュニティチャットや寄付ページへのリンクが提供されています。
計画中のv14(プロジェクト史上最大のリリースとされており、公開リリース日は未定で、新しいインポートパスを持つためv12のコードには影響しません):
- コンパイルチェック付きのアプリケーションビルダー(iris.NewBuilder)。CORS、圧縮、アクセスログ、ヘルスエンドポイント、エラーマッピング、サービス、APIグループを、ステップ順序を強制した一つのチェーンで接続します。
- rest.ReadJSON[T]、rest.OK、rest.NoContent、rest.Count、rest.Created、rest.Paginatedなどのrestヘルパー。これにより、デコード、バリデーション、エラーレンダリングをハンドラー本体から分離します。
- ドメインエラーからHTTPレスポンスへのマッピングを一度だけ宣言するためのrest/errorsパッケージ。ログ記録やJSON/ビューとしてのレンダリングのためのオプションコレクターを備えています。
- MVC以外でも利用可能な依存関係注入。Build()中に実行されるInit(ctx)フックと、シャットダウン時に閉じられるクローズ可能リソースを提供します。heroパッケージはdepとrestに置き換えられました。
- パッケージの移動:sessions、cache、websocket、i18n、view、versioningがミドルウェアになります。mvcはfileserver、sitemap、apigraphコントローラーと共にcontrollerの下に移動します。ビューエンジンの実装はiris-contrib/viewsに移動します。
- 約30のバンドル済みミドルウェア。httpcost(リクエストごとの時間、メモリ、CPU)、bodylimit、compress、counter、referrer、geolocation、ipaccess、servertimingなどの新しいものが含まれます。
- iris.Optionsの部分リテラルによる設定。BindはSERVER_CONFIG環境変数またはファイルからYAMLをロードします。
- PartyからRouterへ、ctx.URLParamからctx.Query().Getへの名称変更などが含まれ、移行ガイドに記載されています。
- デフォルトでセキュアなセッションクッキー(Secure, SameSite=Lax)、すべての読み取りパスにおけるリクエストボディ制限、およびレート制限とLogoutで以前に報告された問題の修正。
- ドキュメントとして、リポジトリ内の23章からなる書籍、スタートガイド、v12移行ガイド、および生成されたWikiが計画されています。
READMEでは、Irisを高速でシンプルながらフル機能であると位置づけ、長期的なコミュニティサポートを強調しています。また、自ら測定値を報告するのではなく、外部のベンチマークや推薦ページへのリンクを提供しています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.