
前の記事で、基本的な短縮URLサービスを構築しました。
包括的な短縮URLサービスとなるためには、データ分析機能を追加することが不可欠です。データ分析は、短縮URLサービスのコアバリューの1つです。リンクのクリックを追跡することで、その普及効果、ユーザープロファイル、その他の情報を理解することができます。
次は、サービスにクリック計測機能を追加し、クリックごとに時間、IPアドレス、デバイス情報を記録します。
1. クリックレコード用のデータベースエンティティを作成する
まず、各クリックレコードを保存するための新しいデータベーステーブルが必要です。同様に、TypeORMエンティティを作成してその構造を定義します。
src ディレクトリに click という名前の新しいフォルダを作成し、その中に click.entity.ts ファイルを作成します。
説明:
@ManyToOne: このデコレーターは、ClickとShortLinkの間の関係を確立します。1つの短縮URLには、多数(Many)のクリックが関連付けることができます。@JoinColumn: データベースレベルで2つのテーブルを関連付けるために使用される外部キー列の名前を指定します。
2. ShortLink エンティティを更新する
短縮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. リダイレクト中のクリック計測を統合する
次に、ShortLinkController の redirect メソッドに追跡ロジックを統合します。
ShortLinkModule を更新する
まず、ShortLinkModule が ClickModule をインポートして ClickService を使用できるようにする必要があります。
ShortLinkController を変更する
src/short-link/short-link.controller.ts を開き、ClickService を注入し、redirect メソッドでそれを呼び出します。
主な変更点:
ClickServiceを注入しました。redirectメソッドで、@Req()デコレーターを介してexpressのRequestオブジェクトを取得しました。reqオブジェクトから、req.ip(IPアドレス)とreq.get('user-agent')(デバイスとブラウザの情報)を取得しました。this.clickService.recordClick()を呼び出して、クリックレコードを保存しました。注意、クリック記録操作がリダイレクトをブロックしないように、ここではawaitを使用しませんでした。
5. 統計情報を表示する
データが記録されたら、それを見るためのエンドポイントも必要です。ShortLinkController に統計エンドポイントを追加しましょう。
このエンドポイントが機能するためには、ShortLinkService に findOneByCodeWithClicks メソッドを追加する必要があります。
src/short-link/short-link.service.ts を開きます。
これでサービスを再起動します。短縮URLにアクセスした後、http://localhost:3000/stats/your-short-code に GET リクエストを行うと、以下のようなJSONレスポンスが表示され、詳細なクリックレコードが含まれています。
これで、短縮URLサービスにはクリック計測と統計分析機能が備わりました!
本番環境への更新
サービスがすでにオンラインで実行されている場合、ローカルでデバッグした後の次のステップは、更新を本番サーバーにデプロイすることです。
Leapcell にデプロイされたアプリケーションの場合、この手順は非常に簡単です。GitHub にコードをプッシュするだけで、Leapcell が最新のコードを自動的にプルしてアプリケーションを更新します。
さらに、Leapcell 自体には強力な組み込みtraffic analysis機能があります。クリック計測を自分で実装しなくても、Leapcell ダッシュボードに表示されるデータから深いユーザーインサイトを得ることができます。
Xでフォローする:@LeapcellJP
関連記事:
