[golang]fiber API6~Ambassador: 検索機能の実装~

こんにちは、KOUKIです。

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

前回は、Redisにキャッシュデータを保存する処理を実装しました。

今回は、プロダクトの検索機能を実装します。

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

前回

作るもの

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

エンドポイント
  • GET /api/ambassador/products/frontend
  • GET /api/ambassador/products/backend
  • POST /api/ambassador/links
  • GET /api/ambassador/stats
  • GET /api/ambassador/rankings

今回は、「/api/ambassador/products/backend」への処理を追加します。

プロダクトの検索

実務で、検索機能を実装する機会は結構あります。

実装方法はいくつかありますが、ここではURLの末尾にクエリを仕込み、GETリクエストを送ることで実現したいと思います。

上記のURLでは、「tkc」という文字列を使って、プロダクトの検索を行います。検索クエリに「q=」を指定していますが、これはプログラムで自由に決められるのでなんでも良いです。

ルートの追加

「/api/ambassador/products/backend」へのルートを追加します。

コントローラーの追加

「/api/ambassador/products/backend」へのコントローラーを追加します。

ここに、検索機能を実装します。

ここで実装した検索機能ロジックは、以下の通りです。

  • Queryメソッドで、URLに”q”の文字列があるかチェック
  • qが存在していた場合、検索を行う
  • qが存在していない場合、検索を行わず、全てのプロダクト情報を返却
  • 検索文字列、検索対象文字列の比較は小文字で行う(大小の区別をなくすため)
  • 検索対象は、プロダクトのTitleとDescription

検証

以下のパラメータで、リクエストを送ってみましょう。

  • URL: http://localhost:8000/api/ambassador/products/backend?q=tkc
  • 形式: GET
  • query: tkc

TitleかDescriptionに、tkcが含まれているプロダクトを検索します。

Titleにtkcが含まれているので、検索ができました。

次は、クエリなしで実行してみましょう。

  • URL: http://localhost:8000/api/ambassador/products/backend

クエリがない場合は、検索ではないとみなされるので、全てのデータを取得しました!

次回

次回は、ソート機能実装しましょう。

Go言語まとめ

ソースコード

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

productController.go

routes.go

コメントを残す