使用Golang和GoFr构建URL缩短服务
使用Golang和GoFr构建URL缩短服务 很高兴在Medium上分享我的最新文章!🚀
学习如何通过使用Go和GoFr构建一个URL缩短器来简化你的链接。 本文探讨了开发过程以及GoFr如何简化Web应用程序的构建。
文章链接:LinkedIn
#Technical Discussion
1 回复
更多关于使用Golang和GoFr构建URL缩短服务的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用GoFr构建URL缩短服务是个很好的选择,它提供了快速开发Web应用所需的核心功能。以下是一个基本的实现示例:
package main
import (
"github.com/gofr-dev/gofr"
"math/rand"
"time"
)
type URLMapping struct {
ShortURL string `json:"short_url"`
LongURL string `json:"long_url"`
}
var urlStore = make(map[string]string)
func generateShortCode() string {
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
rand.Seed(time.Now().UnixNano())
b := make([]byte, 6)
for i := range b {
b[i] = charset[rand.Intn(len(charset))]
}
return string(b)
}
func main() {
app := gofr.New()
// 创建短链接
app.POST("/shorten", func(c *gofr.Context) (interface{}, error) {
var req struct {
URL string `json:"url"`
}
if err := c.Bind(&req); err != nil {
return nil, err
}
shortCode := generateShortCode()
urlStore[shortCode] = req.URL
return URLMapping{
ShortURL: c.Host() + "/" + shortCode,
LongURL: req.URL,
}, nil
})
// 重定向短链接
app.GET("/{shortCode}", func(c *gofr.Context) (interface{}, error) {
shortCode := c.PathParam("shortCode")
longURL, exists := urlStore[shortCode]
if !exists {
return nil, gofr.Error("URL not found")
}
return nil, c.Redirect(longURL)
})
app.Start()
}
这个实现包含了内存存储的短链接生成和重定向功能。GoFr的路由和上下文处理简化了HTTP请求的处理流程。对于生产环境,建议使用数据库持久化存储,并添加过期时间、访问统计等功能。

