短URL生成服务,使用snowflake生成key,使用redis存储映射。
- 生成一个短URL:
curl -X POST \
https://d.zhuyst.cc/new \
-d 'url=https://github.com/zhuyst/shorturl-service'
{"code":200,"message":"OK","url":"https://d.zhuyst.cc/4dUaeq5"}
- 在浏览器中输入d.zhuyst.cc/4dUaeq5
- 安装服务
go get -u github.com/zhuyst/shorturl-service
- 引入服务
import "github.com/zhuyst/shorturl-service"
package main
import (
"github.com/gin-gonic/gin"
"github.com/go-redis/redis"
"github.com/zhuyst/shorturl-service"
"log"
"regexp"
)
func main() {
redisClient := redis.NewClient(&redis.Options{
Addr: "redis:6379",
})
if err := redisClient.Ping().Err(); err != nil {
log.Fatalf("redisClient ping FAIL: %s", err.Error())
return
}
r := gin.Default()
if err := shorturl_service.InitRouter(r, redisClient, &shorturl_service.Option{
Domain: "d.zhuyst.cc",
ServiceUri: "/",
LongUrlRegexp: regexp.MustCompile("https://.*"),
}); err != nil {
log.Fatalf("shorturl_service init FAIL: %s", err.Error())
}
if err := r.Run(":8080"); err != nil {
log.Fatalf("gin init FAIL: %s", err.Error())
}
}
- clone项目
git clone https://github.com/zhuyst/shorturl-service.git
- 修改
example\main.go
中Option
相关配置
if err := shorturl_service.InitRouter(r, redisClient, &shorturl_service.Option{
Domain: "d.zhuyst.cc",
ServiceUri: "/",
LongUrlRegexp: regexp.MustCompile("https://.*"),
}); err != nil {
log.Fatalf("shorturl_service init FAIL: %s", err.Error())
}
- 使用
docker-compose
启动项目
docker-compose up -d