Rumah >pembangunan bahagian belakang >Golang >Perkhidmatan Pemendekan URL Menggunakan GO

Perkhidmatan Pemendekan URL Menggunakan GO

DDD
DDDasal
2025-01-30 02:25:14360semak imbas

URL Shortening Service using Go

Pernah tertanya -tanya bagaimana perkhidmatan seperti Bitly mencipta pautan ringkas, boleh dikongsi dari URL yang panjang? Tutorial ini membimbing anda melalui membina pemendekkan URL menggunakan Go, Redis, dan Docker. Ini adalah projek yang hebat untuk pemaju untuk meningkatkan kemahiran mereka dalam pembangunan web praktikal.

Hasil Pembelajaran Utama

Tutorial ini merangkumi:

    persediaan projek pergi dengan modul.
  • perkembangan API yang tenang di Go.
  • memanfaatkan redis untuk penyimpanan nilai kunci yang cekap.
  • Penstrukturan kod GO untuk mengekalkan dan berskala.
Prasyarat

Pastikan anda mempunyai yang berikut dipasang:

    Docker
  • desktop docker (pasang pada sistem anda)
Pelaksanaan langkah demi langkah

1. Inisialisasi Projek

Buat direktori projek dan mulakan modul GO:

<code class="language-bash">mkdir url-shortener
cd url-shortener
go mod init github.com/<username>/url-shortener</code>
Ini menghasilkan fail

untuk pengurusan ketergantungan. Ganti go.mod dengan nama pengguna github anda. <username>

2. Struktur Projek

mengatur fail projek anda untuk kejelasan:

<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>
3. Pemasangan Ketergantungan

Pasang pakej Go yang diperlukan:

<code class="language-bash">go get github.com/go-redis/redis/v8
go get github.com/gorilla/mux</code>
Ini menyediakan interaksi redis dan keupayaan penghalaan.

4. Definisi Model Data

dalam

, tentukan struktur data untuk permintaan dan tindak balas:

models/url.go

5. Konfigurasi Penyimpanan Redis
<code class="language-go">package models

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

type ShortenResponse struct {
 ShortURL string `json:"short_url"`
}</code>

Melaksanakan operasi Redis dalam

:

storage/redis-store.go

Kod ini mengendalikan penjimatan dan mengambil URL menggunakan REDIS. Fungsi hash FNV-1A memastikan generasi url pendek yang cekap.
<code class="language-go">// ... (RedisStore struct and methods as in original example) ...</code>

6. Pelaksanaan Handler API

Buat logik API dalam

:

handlers/handlers.go

Pengendali ini menguruskan pemendekan URL, pengalihan semula, dan pengambilan domain teratas.
<code class="language-go">// ... (ShortenURL, RedirectURL, GetTopDomains functions as in original example) ...</code>

7. Persediaan Laluan

Tentukan laluan API dalam

:

router/router.go

Ini mengkonfigurasi laluan untuk memendekkan, mengalihkan, dan mengambil domain teratas.
<code class="language-go">// ... (SetupRouter function as in original example) ...</code>

8. Titik Kemasukan Aplikasi

dalam

, mulakan pelayan HTTP:

main.go Ini memulakan penghala dan memulakan pelayan, melayari semua laluan berdaftar.

<code class="language-go">// ... (main function as in original example) ...</code>
9. Penciptaan Dockerfile

Buat

untuk membekalkan aplikasi:

Dockerfile 10. Konfigurasi Docker-compose.yml

<code class="language-dockerfile">// ... (Dockerfile content as in original example) ...</code>
Gunakan

untuk menguruskan aplikasi dan redis:

docker-compose.yml 11. Pelaksanaan Permohonan

Bina dan jalankan aplikasi:
<code class="language-yaml">// ... (docker-compose.yml content as in original example) ...</code>

Ini membina imej Docker dan memulakan bekas.

12. API Endpoint Testing
<code class="language-bash">docker-compose up --build</code>

menguji titik akhir API menggunakan alat seperti Postman atau Curl (contoh yang disediakan dalam respons asal).

Kesimpulan

Anda telah berjaya membina perkhidmatan pemendekan URL! Projek ini menunjukkan kemahiran praktikal, redis, dan docker.

Peningkatan Masa Depan

Pertimbangkan sambungan ini:

  • URL pendek yang disesuaikan: Benarkan pengguna menentukan pautan pendek mereka.
  • Dashboard Analytics: Statistik Penggunaan URL Trek.
  • URL Expiration: Melaksanakan tamat tempoh URL pendek.

Kod lengkap tersedia [pautan ke repositori]. Ingatlah untuk menggantikan ruang letak seperti <username> dengan nilai sebenar anda.

Atas ialah kandungan terperinci Perkhidmatan Pemendekan URL Menggunakan GO. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn