[golang]fiber API9~Admin: Link APIの作成~

こんにちは、KOUKIです。

GolangのWebフレームワークであるfiberを使ってAPIを開発しています。

前回は、ModelのEmbeddedとProductデータの作成プログラムを実装しました。

今回は、UserとProductsモデルを関連付ける(LINK)テーブルモデル/APIを実装します。

尚、Udemyの「React, NextJS and Golang: A Rapid Guide – Advanced」コースを参考にしています。解釈は私が勝手に付けているので、本物をみたい場合は受講をお勧めします!

前回

事前準備

フォルダ/ファイル作成

作るもの

Admin機能を作りたいと思います。エンドポイントは、次の通りです。

エンドポイント
  • GET/POST /api/admin/products
  • GET/PUT/DELETE /api/admin/products/{product_id}
  • GET /api/admin/users/{user_id}/links
  • GET /api/admin/orders
  • GET /api/admin/ambassadors

今回は、「/api/admin/users/{user_id}/links」への処理を実装します。

Linkモデル

DB操作のためのORMとして、GORMを使っています。これを使うと、Goの構造体からデータベースのスキーマーを簡単に作成したり、クエリを書かなくてもデータの作成・取得・更新・削除処理の実装が容易になるので、おすすめです。

Modelの追加

GORMのfierignKeymany2manyを使って、UserとProductをLinkさせる構造体を実装します。

fierignKeyでは、UserのIDを紐づけてます。そして、many2manyでは、LinkとProductsを紐付けました。

「link_products」は、product「s」と複数形になっていますが、これはGORMのデフォルトの挙動で、Product構造体から「Products(複数形)」が作成されるので、このように指定しています。

マイグレーションの追加

LinkもGORMのマイグレーションに追加します。

AutoMigrageメソッドにLinkモデルを追加するだけで、dockerコンテナ立ち上げ時に、自動的にスキーマーを作ってくれます。

Link API

続いて、Link APIの実装を進めていきます。

ルートの追加

「/api/admin/users/{user_id}/links」へのルートを実装します。

コントローラーの追加

Linkコントローラーを実装しましょう。

user idに紐づくLink情報を取得します。

検証

以下のパラメータで、動作検証をしましょう。

  • URL: http://localhost:8000/api/admin/users/3/links
  • 形式: GET

エラーは発生しないようですね。該当データがないので、戻り値は空でOKです。

次回

次回は、Order APIを実装しましょう。

Go言語まとめ

ソースコード

ここまでのソースコードを以下に記載します。

link.go

db.go

routes.go

linkController.go

コメントを残す