**Ginとは何か?**
Gin は、Golang で書かれた Web フレームワークです。
martini に似た API を持ちながら、非常に優れたパフォーマンスを発揮し、最大で40倍高速であることが特徴です。
性能と優れた生産性が必要なら、きっと Gin が好きになれるでしょう。
高速
基数木(redix tree)を元にしたルーティング、小さなメモリフットプリント、リフレクションなし、予測可能な API 性能などの特徴があります。
ミドルウェアのサポート
受信したHTTPリクエストをミドルウェアのチェーンと最終的なアクションによりハンドリングできます。たとえば、ロガー、認証、GZIP、さらに DB へのメッセージのポストなどが可能です。
クラッシュフリー
Gin は、HTTP リクエスト中に発生した panic をキャッチし、回復することが可能です。これにより、サーバーが常に利用可能な状態になります。さらに、この panic を Sentry などに報告することもできます。
JSON のバリデーション
Gin はリクエストの JSON をパース・検証できます。たとえば、必須の値が存在するかどうかをチェックできます。
ルートのグループ化
ルートを上手く組織化しましょう。認証が必要なページと必要のないページ、異なるバージョンの API などを区別できます。さらに、各グループは性能劣化なしに無制限にネストできます。
エラーの管理
Gin は HTTP リクエスト中に発生したすべてのエラーを収集する便利な手段を提供します。最終的に、ミドルウェアによって、ログファイルへの書き込み、データベースへの格納、ネットワーク越しの送信などが行われます。
レンダリングのビルトイン
Gin は JSON、XML、HTML のレンダリングのための簡単に使える API を提供します。
拡張可能
新しいミドルウェアの作成は非常に簡単です。サンプルコードを見てみてください。