ginを使って簡単なAPIを作る2022/09/25に公開DockerGogintechGoのフレームワークである、ginを使って簡易的なAPIを作成していきたいと思います。ginとはginは、Goで書かれたWebアプリケーションフレームワークになります。高速なパフォーマンス、ミドルウェアが充実、JSONのリクエストのバリデーション、ルーティングのグループ化、エラー管理、組み込みのレンダリング、拡張性があるなどの特徴を持ちます。"github.com/gin-gonic/gin"これで、ginを使用することができます、簡単ですね!docker環境作成Docker環境で、行いたいと思うので、以下ファイルを作成します。説明については割愛させていただきます。ホットリロードするために、Airを導入しています。trueAPI作成それでは、APIの作成を行なっていきます。getBooks)router.Run()}gin.Defaultgin.Defaultは、*gin.Engine構造体を返します。ginでは、このEngine構造体を使って,エンドポイント、ミドルウェアなどを登録しておくことができます。gin.Contextgin.Contextは、リクエストに関連する情報が格納されており、また応答を返すことができます。クエリパラメータ、データ、ペイロード、ヘッダーなどが格納されていて、アクセスすることが可能です。標準のGoで、HandleFuncを作成する際に、引数にResponseWriterや*http.Requestを渡すと思いますが、Context構造体のフィールドにも存在します。Run()メソッドも、内部では、http.ListenAndServe()を呼び出してます。標準のGoで、サーバー立ち上げがわかる方なら、置き換わってると考えれば理解しやすいと思います。コードは、localhost:8080/booksにアクセスすると、getBooksが呼ばれます。処理としては、book構造体のスライスであるbooksをJSONとしてシリアライズして、返しています。:8080立ち上がったので、curlコマンドを使用し、作成したエンドポイントにカールします。インデントされたJSONが作成され返されてますね!次は、bookに新しく、追加できるようにしていきたいと思います。createBook)router.Run()}追加するための、JSONファイルを作成します。2}コンテナを立ち上げます。:8080立ち上がったので、先ほど作成したJSONファイルを送信してみたと思います。追加することができたと思います。コードは、リクエストからきたJSONを、book構造体にバインドして、booksの中にappendして、インデントされたJSONを返します。次は、特定の本を取得してみたいと思います。createBook)router.Run()}コンテナを立ち上げます。:8080立ち上がったので、特定の本を取得してみたいと思います。指定した本を取得することができました。本が存在しない場合も試してみます。存在しないidを指定してみます。found."存在しないid指定した時の動作も問題無さそうですね。Goは、標準のライブラリが充実してるので、そちらを使用するのも良いと思いますが、規模が大きくなるとginなどのフレームワークを使用した方が効率よく開発出来ると思いますので、触ってみてはいかがでしょうか。/GCPなどを使って開発しています。/GCPなどを使って開発しています。Go言語にハマってます!目次Goのフレームワークである、ginを使って簡易的なAPIを作成していきたいと思います。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。