在 Go 中建立 URL 縮短器:兩個框架的故事
URL 縮短器是簡單工具如何產生巨大影響的經典範例。無論您是在社交媒體上分享鏈接還是以文字形式發送鏈接,較短的 URL 都更易於管理並且看起來更乾淨。
在這篇文章中,我將帶您了解這兩個輕量級且創建速度非常快的URL 縮短器項目,它們都是內建Go:一個使用Gin 框架,另一個使用Gin 框架使用
Gorilla Mux。
每種方法都帶來了獨特的方法,我將重點放在它們的特徵和差異。
~ 原始碼:在這裡找到帶有 GUI 的 URL 縮短器:功能豐富且直觀 讓我們從第一個專案開始—一個超越簡單 API 的 URL 縮短器。它包括 REST API 後端 和 桌面 GUI 應用程式,使開發人員和非技術用戶都可以使用它。本項目使用 Gin 框架 作為後端,使用
Fyne作為 GUI。
-
主要特點
-
REST API 後端
Gin 框架提供快速可靠的 API,用於縮短和重新導向 URL。它輕巧而堅固,非常適合此用例。
桌面 GUI
使用 Fyne 框架建構的 GUI 乾淨、簡約且易於使用。它使用戶無需觸摸終端即可縮短 URL。
安全與隨機金鑰
短 URL 使用安全隨機值生成,確保唯一性並減少衝突的機會。
雙重存取
無論您熟悉 REST API 還是更喜歡 GUI,這個專案都能滿足您的需求。
入門
git clone https://github.com/SirTingling/cloudprojects.git cd url-shortener go get -u github.com/gin-gonic/gin go get -u fyne.io/fyne/v2
-
運行應用程式
- 後端伺服器
go run server.go
- 伺服器將從 http://localhost:8080 啟動。
- 桌面 GUI
go run gui.go
這將打開一個簡單的窗口,您可以在其中輸入長網址並獲得縮短的連結。
-
它是如何運作的?
- API 端點:
-
GET /:short:將短 URL 重新導向至原始 URL。
- GUI 工作流程:
- 輸入長網址。
- 點選「縮短網址」。
GUI 的包含使其比典型的僅後端應用程式更通用。
URL Shortener V2:輕量且簡單
第二個項目非常簡單。它使用 Gorilla Mux 構建,專注於提供基本但實用的 URL 縮短器。如果您正在尋找能夠完成工作的輕量級解決方案,我的朋友們,這就是您的最佳選擇。
主要特點
- 用於路由的 Gorilla Mux
Gorilla Mux 是一個強大的 Go 路由器,這裡用它來處理所有 HTTP 端點。
- 基於 MD5 的金鑰產生
縮短的 URL 是使用原始 URL 的 MD5 雜湊值建立的。是的,我確實同意,它不如隨機生成那麼安全,但是,它有效並確保確定性結果。
- 記憶體儲存
縮短器使用簡單的記憶體映射來儲存 URL。這使得它速度很快,儘管它對於生產規模的應用程式來說並不理想。
- 最小依賴性
僅使用 Gorilla Mux 作為外部依賴項,專案很容易設定和部署。
我們走吧!
git clone https://github.com/SirTingling/cloudprojects.git cd url-shortener go get -u github.com/gin-gonic/gin go get -u fyne.io/fyne/v2
運行應用程式
- 啟動伺服器:
go run server.go
伺服器將在 http://localhost:8080 運作。
它是如何運作的
- 建立短網址:
- 使用 url 參數向 /create 發送 POST 請求:
go run gui.go
- 回應:
git clone <repository-url> cd url-shortener go get -u github.com/gorilla/mux </repository-url>
- 重定向: 存取縮短的 URL
go run main.go
這將重定向到原始 URL。
老實說,它實施起來很快,並且作為學習專案或小規模用例運作良好。我喜歡它作為一個快速的迷你項目。
比較兩種方法
以下是差異的快速細分:
Feature | URL Shortener with GUI (Gin) | URL Shortener V2 (Mux) |
---|---|---|
Framework | Gin | Gorilla Mux |
Frontend | Desktop GUI (Fyne) | None |
URL Key Generation | Secure Random Values | MD5 Hash |
Storage | Not Specified | In-Memory |
Complexity | Moderate | Simple |
在我個人看來,使用這兩種方法都很簡單,我希望你們都嘗試一下,因為它們都可以在 URL 縮短之外的許多不同場景中使用。
基於 Gin 的解決方案非常適合想要具有使用者介面的一體化工具的人,而基於 Mux 的版本非常適合輕量級、僅 API 用例。
感謝您再次收聽我使用 Go(以及更多語言和工具)進行的迷你專案冒險。我會在下一篇中抓住你們!乾杯! ! ?
以上是Go 中的 URL 縮短器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文解釋了GO的軟件包導入機制:命名imports(例如導入“ fmt”)和空白導入(例如導入_ fmt; fmt;)。 命名導入使包裝內容可訪問,而空白導入僅執行t

本文解釋了Beego的NewFlash()函數,用於Web應用程序中的頁間數據傳輸。 它專注於使用newflash()在控制器之間顯示臨時消息(成功,錯誤,警告),並利用會話機制。 Lima

本文詳細介紹了MySQL查詢結果的有效轉換為GO結構切片。 它強調使用數據庫/SQL的掃描方法來最佳性能,避免手動解析。 使用DB標籤和Robus的結構現場映射的最佳實踐

本文演示了創建模擬和存根進行單元測試。 它強調使用接口,提供模擬實現的示例,並討論最佳實踐,例如保持模擬集中並使用斷言庫。 文章

本文探討了GO的仿製藥自定義類型約束。 它詳細介紹了界面如何定義通用功能的最低類型要求,從而改善了類型的安全性和代碼可重複使用性。 本文還討論了局限性和最佳實踐

本文詳細介紹了在GO中詳細介紹有效的文件,將OS.WriteFile(適用於小文件)與OS.openfile和緩衝寫入(最佳大型文件)進行比較。 它強調了使用延遲並檢查特定錯誤的可靠錯誤處理。

本文使用跟踪工具探討了GO應用程序執行流。 它討論了手冊和自動儀器技術,比較諸如Jaeger,Zipkin和Opentelemetry之類的工具,並突出顯示有效的數據可視化


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器