は、Bitlyのようなサービスが長いURLから簡潔で共有可能なリンクをどのように作成するか疑問に思ったことがありますか?このチュートリアルは、Go、Redis、およびDockerを使用してURLショートナーを構築することをガイドします。 開発者が実際のWeb開発におけるスキルを向上させるのに最適なプロジェクトです。
重要な学習成果モジュールを使用してプロジェクトのセットアップに移動します
2。プロジェクト構造
<code class="language-bash">mkdir url-shortener cd url-shortener go mod init github.com/<username>/url-shortener</code>
透明にプロジェクトファイルを整理します:go.mod
<username>
<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>
<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>
storage/redis-store.go
:
<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。アプリケーションのエントリポイント
で、HTTPサーバーを起動します:router/router.go
<code class="language-go">// ... (SetupRouter function as in original example) ...</code>
9。 dockerfile作成
main.go
<code class="language-go">// ... (main function as in original example) ...</code>
11。アプリケーションの実行Dockerfile
<code class="language-dockerfile">// ... (Dockerfile content as in original example) ...</code>
12。 APIエンドポイントテストdocker-compose.yml
URL短縮サービスを正常に構築しました!このプロジェクトは、実用的なGO、Redis、およびDockerスキルを示しています
将来の機能強化
以上がGOを使用したURL短縮サービスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。