短连接跳转的原理

clylia · · 1846 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

日常中常用短链接来节省字符长度,如中国移动的活动短信: ![Screenshot_20190622_134628_com.android.mms.jpg](https://static.studygolang.com/190622/c885e31b5b6bc18ac32c50d2b47ab60b.jpg) 那么它的实现原理很简单: **就是302跳转** 通过对传进来的url生成一个短的编码,然后使这个编码与这个url在数据库中一一对应,然后通过访问对外公开的api中如: https://t.cn/+生成的短链接,然后取到这个生成的短链接去数据库中查询对应的url,重定向302返回浏览器即可。这里我们不关心加密之类算法,数据存储的过程,只看短链接如何实现跳转的过程 下面是代码演示: ``` package main import ( "net/http" ) func OpenOrigin(w http.ResponseWriter, r *http.Request) { // 截取传入的段路径 path := r.URL.Path[len("/jump/"):] // http.StatusFound 就是302 if path == "clylia" { // 重定向到原网址,使用clylia和https://www.baidu.com对应 http.Redirect(w, r, "https://www.baidu.com", http.StatusFound) } else if path == "golang" { // 重定向到原网址,使用golang和https://studygolang.com对应 http.Redirect(w, r, "https://studygolang.com", http.StatusFound) } else { w.Write([]byte("I don't konw what to do.")) } } func main() { http.HandleFunc("/jump/", OpenOrigin) http.ListenAndServe(":5000", nil) } ``` 这里我们启动了一个http server,通过访问http://127.0.0.1:5000/jump/clylia ,来实现跳转的过程 启动服务,我们在浏览器中访问http://127.0.0.1:5000/jump/clylia 时,浏览器会跳转到https://www.baidu.com 这里,输入http://127.0.0.1:5000/jump/golang 时就是访问 https://studygolang.com ,那么短链接的原理就是这样了,谢谢

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1846 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传