Nest.js 短縮URLサービスにクリック計測を追加する

要約
このチュートリアルでは、リダイレクトプロセス中にユーザーデータを記録するためのデータベースエンティティを作成することにより、NestJS短縮URLサービスにクリック計測と分析を追加する方法を説明します。
意見はこのエリアに表示されます
アイキャッチ画像
Cover

前の記事で、基本的な短縮URLサービスを構築しました。

包括的な短縮URLサービスとなるためには、データ分析機能を追加することが不可欠です。データ分析は、短縮URLサービスのコアバリューの1つです。リンクのクリックを追跡することで、その普及効果、ユーザープロファイル、その他の情報を理解することができます。

次は、サービスにクリック計測機能を追加し、クリックごとに時間、IPアドレス、デバイス情報を記録します。

1. クリックレコード用のデータベースエンティティを作成する

まず、各クリックレコードを保存するための新しいデータベーステーブルが必要です。同様に、TypeORMエンティティを作成してその構造を定義します。

src ディレクトリに click という名前の新しいフォルダを作成し、その中に click.entity.ts ファイルを作成します。

説明:

  • @ManyToOne: このデコレーターは、ClickShortLink の間の関係を確立します。1つの短縮URLには、多数(Many)のクリックが関連付けることができます。
  • @JoinColumn: データベースレベルで2つのテーブルを関連付けるために使用される外部キー列の名前を指定します。

短縮URLからすべてのクリックレコードをクエリできるように、short-link.entity.ts ファイルも更新して双方向の関係を確立する必要があります。

src/short-link/short-link.entity.ts を開き、clicks プロパティを追加します。

説明:

  • @OneToMany: ShortLink から Click への一対多の関係を確立します。1つの短縮URL(One)は、多数(Many)のクリックレコードを持つことができます。

3. クリックサービス用のモジュールとロジックを作成する

ShortLink と同様に、Click 用の専用モジュールとサービスを作成し、関連するロジックを処理し、コードのモジュール性を維持します。

Nest CLI を使用して、必要なファイルを迅速に生成します。

ClickModule を構成する

src/click/click.module.ts を開き、TypeOrmModule をインポートし、Click エンティティを登録します。

ClickService を実装する

src/click/click.service.ts を開き、クリックを記録するためのロジックを記述します。

4. リダイレクト中のクリック計測を統合する

次に、ShortLinkControllerredirect メソッドに追跡ロジックを統合します。

ShortLinkModule を更新する

まず、ShortLinkModuleClickModule をインポートして ClickService を使用できるようにする必要があります。

ShortLinkController を変更する

src/short-link/short-link.controller.ts を開き、ClickService を注入し、redirect メソッドでそれを呼び出します。

主な変更点:

  1. ClickService を注入しました。
  2. redirect メソッドで、@Req() デコレーターを介して expressRequest オブジェクトを取得しました。
  3. req オブジェクトから、req.ip(IPアドレス)と req.get('user-agent')(デバイスとブラウザの情報)を取得しました。
  4. this.clickService.recordClick() を呼び出して、クリックレコードを保存しました。注意、クリック記録操作がリダイレクトをブロックしないように、ここでは await を使用しませんでした。

5. 統計情報を表示する

データが記録されたら、それを見るためのエンドポイントも必要です。ShortLinkController に統計エンドポイントを追加しましょう。

このエンドポイントが機能するためには、ShortLinkServicefindOneByCodeWithClicks メソッドを追加する必要があります。

src/short-link/short-link.service.ts を開きます。

これでサービスを再起動します。短縮URLにアクセスした後、http://localhost:3000/stats/your-short-codeGET リクエストを行うと、以下のようなJSONレスポンスが表示され、詳細なクリックレコードが含まれています。

これで、短縮URLサービスにはクリック計測と統計分析機能が備わりました!

本番環境への更新

サービスがすでにオンラインで実行されている場合、ローカルでデバッグした後の次のステップは、更新を本番サーバーにデプロイすることです。

Leapcell にデプロイされたアプリケーションの場合、この手順は非常に簡単です。GitHub にコードをプッシュするだけで、Leapcell が最新のコードを自動的にプルしてアプリケーションを更新します。

Leapcell

さらに、Leapcell 自体には強力な組み込みtraffic analysis機能があります。クリック計測を自分で実装しなくても、Leapcell ダッシュボードに表示されるデータから深いユーザーインサイトを得ることができます。

ImageP1

Xでフォローする:@LeapcellJP


ブログでこの記事を読む

関連記事:

Explore More
関連記事はありません。
Trends