[golang]fiber API3~Ambassador: Aliases~

こんにちは、KOUKIです。

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

前回は、リクエストスコープを設定し、APIのリクエストにスコープ(Ambassador/Amdin)を持たせました。

今回は、Aliasの設定をします。

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

前回

作るもの

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

エンドポイント
  • POST /api/ambassador/register
  • POST /api/ambassador/login
  • GET /api/ambassador/user
  • POST /api/ambassador/logout
  • PUT /api/ambassador/users/info
  • PUT /api/ambassador/users/password

Aliasesの設定

本APIでは、AdminとAmbassadorの2種類のユーザーが存在するので、それぞれを区別するためにAliasを設定をする必要があります。

AdminとAmbassadorのリクエストパスは、異なるルートを指定していますが、リクエスト先のコントローラーは同じなので、ユーザーごとに処理を分けたいときにAliasesを設定します。

Userモデルの修正

Revenueパラメータをつけてください。

Revenueを計算するロジックをユーザーごとに分けたいと思います。

Alias

Alisaseは、typeで設定しましょう。

Revenueの計算

Admin,AmbassadorそれぞれにRevenueを計算するメソッドを追加します。

Aliasを作ると、それぞれにメソッドを作れる -> 処理を振り分けられるのでとてもいい感じになりますね。

CalculateRevenueメソッドを呼び出す

先ほど実装したメソッドは、authController.goのUserメソッドから呼び出します。

UserモデルのRevenueには、「omitempty」が設定されており、ambassadorにだけCalculateRevenueメソッドを呼び出しているので、Revenueの戻り値はambassadorのみ取得できることになります。
※omitemptyは空の値の場合、呼び出し元にデータを返さない

Alisaseを貼ることで、モデルが持つ情報の意味合いを切り替えることができるので、大変便利です。

検証

以下のパラメータで、検証してみましょう。

  • URL: http://localhost:8000/api/ambassador/user
  • 形式: GET

ambassadorは、revenueが0の値を取得できました。

ログインしなおして、以下のパラメータでリクエストを送りましょう。

  • URL:http://localhost:8000/api/admin/user
  • 形式: GET

AdminにはRevenueが見えていない(omitemptyのおかげ)ので、成功です!

次回

次回は、Redisを導入しましょう。

Go言語まとめ

ソースコード

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

auth.go

auathController.go

コメントを残す