ホームページ > バックエンド開発 > Golang > GOを使用したURL短縮サービス

GOを使用したURL短縮サービス

DDD
リリース: 2025-01-30 02:25:14
オリジナル
284 人が閲覧しました

URL Shortening Service using Go

は、Bitlyのようなサービスが長いURLから簡潔で共有可能なリンクをどのように作成するか疑問に思ったことがありますか?このチュートリアルは、Go、Redis、およびDockerを使用してURLショートナーを構築することをガイドします。 開発者が実際のWeb開発におけるスキルを向上させるのに最適なプロジェクトです。

重要な学習成果

このチュートリアルカバー:

モジュールを使用してプロジェクトのセットアップに移動します
    go。
  • のRESTFUL API開発 効率的なキー値ストレージのためにRedisをレバレッジします
  • メンテナンス性とスケーラビリティのためのGOコードを構造化します。
  • 前提条件
  • 次のインストールを確認してください
docker

dockerデスクトップ(システムにインストール)

    ステップバイステップの実装
  • 1。プロジェクトの初期化
  • プロジェクトディレクトリを作成し、GOモジュールを初期化します:

これにより、依存関係管理のために

ファイルが生成されます。 Githubユーザー名に

を置き換えます。

2。プロジェクト構造
<code class="language-bash">mkdir url-shortener
cd url-shortener
go mod init github.com/<username>/url-shortener</code>
ログイン後にコピー

透明にプロジェクトファイルを整理します:go.mod <username>

3。依存関係のインストール

必要なGOパッケージをインストールする:

<code>url-shortener/
├── handlers/         # API request handlers
│   └── handlers.go
├── models/           # Data structures
│   └── url.go
├── router/           # Routing configuration
│   └── router.go
├── storage/          # Redis interaction logic
│   └── redis-store.go
├── main.go           # Application entry point
├── Dockerfile        # Docker build instructions
├── docker-compose.yml # Docker Compose configuration
└── go.mod            # Go module file</code>
ログイン後にコピー
これらは、Redisの相互作用とルーティング機能を提供します

4。データモデルの定義

、リクエストと応答のデータ構造を定義します:
<code class="language-bash">go get github.com/go-redis/redis/v8
go get github.com/gorilla/mux</code>
ログイン後にコピー

5。 Redis Storage Configuration

models/url.goにRedis操作を実装します

<code class="language-go">package models

type ShortenRequest struct {
 URL string `json:"url"`
}

type ShortenResponse struct {
 ShortURL string `json:"short_url"`
}</code>
ログイン後にコピー
このコードは、Redisを使用してURLの保存と取得を処理します。 FNV-1Aハッシュ関数は、効率的な短いURL生成を保証します

6。 APIハンドラーの実装

storage/redis-store.go

でAPIロジックを作成します
<code class="language-go">// ... (RedisStore struct and methods as in original example) ...</code>
ログイン後にコピー

これらのハンドラーは、URLの短縮、リダイレクト、およびトップドメイン検索を管理します。

7。ルートセットアップ

handlers/handlers.goでAPIルートを定義します

<code class="language-go">// ... (ShortenURL, RedirectURL, GetTopDomains functions as in original example) ...</code>
ログイン後にコピー
これにより、トップドメインの短縮、リダイレクト、および取得のためのルートが構成されます。

8。アプリケーションのエントリポイント

in

で、HTTPサーバーを起動します:router/router.go

<code class="language-go">// ... (SetupRouter function as in original example) ...</code>
ログイン後にコピー
これにより、ルーターが初期化され、サーバーを起動し、登録されたすべてのルートを記録します。

9。 dockerfile作成

a

を作成して、アプリケーションをコンテナ化します:

main.go

10。 docker-compose.yml構成
<code class="language-go">// ... (main function as in original example) ...</code>
ログイン後にコピー

を使用してアプリとredisを管理します:

11。アプリケーションの実行Dockerfile

アプリケーションをビルドして実行します:
<code class="language-dockerfile">// ... (Dockerfile content as in original example) ...</code>
ログイン後にコピー

これにより、Docker画像が構築され、コンテナが起動します

12。 APIエンドポイントテストdocker-compose.yml

PostmanやCurlなどのツールを使用してAPIエンドポイントをテストします(元の応答で提供されている例)。

結論

URL短縮サービスを正常に構築しました!このプロジェクトは、実用的なGO、Redis、およびDockerスキルを示しています

将来の機能強化

これらの拡張機能を検討してください:

  • カスタマイズ可能な短いURL:ユーザーが短いリンクを定義できるようにします。
  • Analyticsダッシュボード:
  • URLの使用統計を追跡します。
  • urlの有効期限:
  • short url expiryを実装してください 完全なコードが利用可能です[リポジトリへのリンク]。
  • のようなプレースホルダーを実際の値に置き換えることを忘れないでください。

以上がGOを使用したURL短縮サービスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート