Gin フレームワークで RESTful API を作成する
公開: 2022-09-02Gin フレームワークを利用して REST API を作成することを楽しみにしていますか? 次に、このブログをよく読んでください。 簡単な手順で基本的な API を作成する方法を学び、その後で他の複雑なプロジェクトに着手できます。 はい、Golang 開発サービスを利用せずに、自分で作業を進めることができます。 ただし、始める前に、Gin フレームワークの理論的側面を理解しておいてください。
- 達成する最初のタスク
- 最初に go-workspace にディレクトリを作成する必要があります。 Windows コンピューターを使用している場合は、コマンド プロンプトを使用します。 オペレーティング システムとして macOS または Linux を使用している場合は、ターミナルを使用します。
- このシナリオでは、コマンド プロンプトを使用します。
cd go-ワークスペース
mkdir ジョブ
CDジョブ
コード。
code . と入力すると、VS Code が起動します。 あなたの場合、それは別の IDE またはエディターである可能性があります。
- VS コードを使ってみる
- 最初に行うことは、main.go ファイルを作成することです。 これに続いて、REST API を作成するために gin フレームワークをダウンロードする必要があります。
- go.mod ファイルを作成する必要があります。 次のように入力します。
go mod init golang.com/job
- go.mod ファイルの作成に続いて、次のように入力します。
github.com/gin-gonic/gin を入手してください
これにより、go.sum ファイルが作成され、gin フレームワークに関連するすべての必要なパッケージがダウンロードされます。
- シンプルな API を使ってみましょう
- コードを書き留めるだけです
パッケージメイン
輸入 (
「fmt」
「ネット/http」
「github.com/gin-gonic/gin」
)
関数メイン()
{s :=gin.Default()
s.GET (“”, func (c *gin.Context){
c.String(http.StatusOK, 「役職は何ですか?」)
}))
s.実行 (「localhost: 8000」)
}
- ご覧のとおり、アプリケーションが必要とするすべてのパッケージをインポートしました。 次に、関数 main に直接進みます。 私たちが行っているのは、Gin のリカバリまたはロガー ミドルウェアのデフォルト モジュールを構築することです。
- デフォルト設定は、変数「s」に含まれています。 この変数を使用して、GET API の開発を支援します。 この例で指定した最初の引数は、API の URL です。
- w.Run(“localhost:8000”) で指定されたベース URL は、localhost:8000 で API をホストするために使用されます。 さらに、最初の引数は実際には API の相対ルートを示します。
- ハンドラー関数 func (c *gin.Context) は、指定できる関数シーケンスを参照します。
- 変数 *gin.Context へのポインターは、関数の引数として機能します。 したがって、この場合の「c」はコンテキストを表します。
- コンテキストは、c.String または c.JSON のいずれかの値を返す必要があります。 ここでは、操作の基準が 2 つあります。 状態は、最初の引数である単純な整数 (http.StatusOK) によって示されます。 net/http パッケージをインポートしたので、これを使用できます。
- この後、サンプル文字列を送信しているだけです。 それは「仕事の役割は何ですか?」です。
- 上記のプログラムを実行してみましょう
プログラムを実行するには、go run main.go と入力する必要があります。

- ご覧のとおり、空白の URL に GET リクエストが存在します。 カスタマイズ機能も搭載。 さらに、エンジンのリリースモード操作が表示されます。 ローカルホスト 8000 にアクティブなエンドポイントが 1 つあります。
- Web ブラウザーで localhost:8000 と入力すると、以下が表示されます。
- それまでの間、VS Code で次のスナップショットを確認できます。

これは何を意味するのでしょうか? ここでは、実行されるコードの応答時間を監視する上で、gin フレームワークが大きな役割を果たしています。
- パラメータの受け渡しをURLで行うGET APIを中心に
次のコードは、API が URL に応答して値 (理想的には文字列) を提供することを前提としています。
s.GET(“/:get”, func (c *gin.Context){
var val = c.Param(“getr”)
c.JSON(http.StatusOK, gin.H{
「応答データ」:val,

}))
}))
// 2 番目のセクション
- 各変数名をコロンで区切って GET リクエストに指定できます。 したがって、基本 URL の後に入力されたものはすべて「get」と見なされます。
- 「get」の値を決定するには、Param のコンテキストと前述の変数の名前を定義する必要があります。 Val は Gin から「get」を受け取り、結果を通知されます。
- 次に、値を含む JSON を転送していることがわかります。
複雑な作業をしていますか? 次に、問題に遭遇して修正できない場合に備えて、 Golang 開発サービスを利用することをお勧めします。
- 上記のプログラムを実行してみましょう
- 繰り返しますが、go run main.go と入力してプログラムを実行する必要があります。
「tcp 127.0.0.1: 8000: バインド: 通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の使用は 1 つだけ許可されています。」というメッセージが表示された場合は、コマンド プロンプトで操作を実行する必要があります。
nestat -ano | 検索文字列:8000
LISTENING の値 (たとえば 7932) を確認してから、次のように入力する必要があります。
taskkill / pid 7932 /F
これにより、pid プロセスが終了します。
- ブラウザでは、次のことを実行します。

localhost:8000 を指定した後に文字列を入力しなければならなかった理由は、API が URL からの文字列を想定しているためです。
- POST API を試す
- ここで POST API への接続を試みます。 さらに、データが体内に存在することを認識しています。 そんな時、構造体が役に立ちます。
- このセクションを覚えていますか?
パッケージメイン
輸入 (
「fmt」
「ネット/http」
「github.com/gin-gonic/gin」
)
- これに続いて、ご覧のとおり、2 つのデータ フィールドを持つ構造体を作成します。
タイプジョブ構造体{
Salary int `json:"salary" binding: "required"`
名前文字列 `json:"name" バインディング: "required"`
}
- json:"salary" と json:"name" は異なるキーを表します。 バインディングが「必須」と指定されていることもわかります。
- //2 番目のセクションに続いて、次のように入力します。
s.POST(“/highlight”, func (c *gin.Context){
var データ ジョブ
エラーの場合:= c.ShouldBind(&data); エラー != ゼロ{
fmt.Println (エラー)
c.JSON(http.StatusBadRequest, gin.H{
「エラー」: fmt.Sprintf(「%v」、エラー)、
}))
} そうしないと{
c.JSON(http.StatusOK, gin.H{
「データ」:データ、
}))
}
}))
- このコードブロックを見てみましょう。 s.POST で、ジョブのオブジェクトを作成します。 その後、コンテキスト「c」がデータモデルにアタッチされます。 c.ShouldBind(&data) がエラーをスローした場合、API に問題を警告します。
- c.JSON(http.StatusBadRequest) の “error”:fmt.Sprintf(“%v”, err) で観察されたエラーを示す不適切なリクエストを作成しました。
- 問題がなければ、「data」キーを使用してデータを API 応答に送り返します。
- コードの最後のブロックを実行しましょう
- では、プログラムの最終段階を調べてみましょう。 これを行うには、 go run main.go と入力する必要があります。 さらに、Postman を使用して、API のしくみとコードのしくみを示します。 デスクトップ版はインストールするだけです。
- 下のスクリーンショットを見ると、本文に 2 つのデータ フィールドがあることがわかります。 Raw と JSON を Body として選択する必要があります。

- [送信] をクリックすると、次の結果が表示されます。
{
"データ": {
「給料」:23000、
「名前」:「ロバート・ホール」
}
}
プログラムは理解できましたか? はい? それから、素晴らしい。 最後のケースでは、3 つの API が実行されていることがわかります。1 つは URL に何も言及されていないもの、1 つは文字列を期待するもの、そして最後のものは本文に値を期待するものです。 うまくいけば、いくつかの困難な REST API タスクに今すぐ取り組むことができます。