文档章节

第三方库mux的基本实践

v
 veliamsli
发布于 2015/04/16 23:18
字数 257
阅读 21
收藏 0

近期公司在搞季度考核,一直在忙新功能的开发和指导新人入门。

golang中有一个ServeMux标准库,这个不说明,本文章主要介绍gorilla/mux包这个强大的url路由器与调度器。

支持URL解析中访问方法与字段,通过正则表达式匹配,也可以设置网站名,还可以自己组URL等其它动作。

代码面前没有隐私。。

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func main() {
    fmt.Println("hello go world!!")
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    s := r.PathPrefix("/products").Subrouter()

    s.HandleFunc("/{key}", ProductsHandler)
    r.HandleFunc("/articles/{category}", ArticlesHandler)
    r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticlesHandler)

    http.Handle("/", r)

    http.ListenAndServe(":8080", nil)

}

func HomeHandler(http.ResponseWriter, *http.Request) {
    fmt.Println("test home handler")
}

func ProductsHandler(http.ResponseWriter, *http.Request) {
    fmt.Println("test product handler")
}

func ArticlesHandler(http.ResponseWriter, *http.Request) {
    fmt.Println("test articles handler")
}


匹配访问方法与字段:

s.HandleFunc("/articles/{category}/{id:[0-9]+}"), ArticleHandler)


内部路由功能

r := mux.NewRouter()
s := r.PathPrefix("/products").Subrouter()
// "/products/"
s.HandleFunc("/", ProductsHandler)
// "/products/{key}/"
s.HandleFunc("/{key}/", ProductHandler)
// "/products/{key}/details"
s.HandleFunc("/{key}/details", ProductDetailsHandler)


URL组合:

url, err := r.Get("article").URL("category", "technology", "id", "42")


设置网站名:

r.Host("{subdomain}.domain.com")



© 著作权归作者所有

共有 人打赏支持
v
粉丝 0
博文 4
码字总数 1163
作品 0
广州
技术主管
ffmpeg转码在安卓平台运行速度过慢。各位有优化方法吗?

如题。一个ffmpeg转码的程序,流程为:视频-->解码元数据-->压缩(指定大小)-->第三方xh264库编码为h264文件。音频-->解码元数据-->faac第三方库转为aac文件。aac和h264 mux为新的mp4文件。程...

志尧仔
2016/04/19
3.1K
4
Go web 开发脚手架--Toruk

Go web 开发脚手架 主要由下面几个第三方库集成,简单、灵活,可以快速开发 web 项目 路由:github.com/gorilla/mux 渲染模板:github.com/unrolled/render Cookie封装:github.com/gorilla/...

AsuraQin
2017/02/17
135
0
书单丨5本书带你走进Python与机器学习的世界

基于大数据的人工智能如今异常火爆 Python 作为最热门的编程语言之一 是实现机器学习算法的首选语言 Python与机器学习这一话题非常的宽广 5本书虽很难覆盖全面,但仍值得细细研读 1.《机器学...

博文视点
2017/12/25
0
0
ffmpeg关于timebase的理解

ffmpeg关于timebase的理解 一:ffmpeg的分层结构 写这篇文章的时候先把ffmpeg分层问题大致说明一下,我们按照最常见的 "转码程序" 和 "摄像头采集" 以及 "播放器" 三个模型总结。 1:转码 转...

zhuweigangzwg
2017/03/22
0
0
golang进阶(六)——restful开发优雅处理error

前言 golang的error处理一直被人诟病,其实通过设计模式可以很好的处理error,这里就以restful开发为例讲下error优雅的处理 resuful开发中,error处理有两个目的,一可以将错误信息返回给用户...

lastsweetop
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

谷歌 Fuchsia 上手体验,将取代Android/win10

在手机市场领域,Google表现很抢眼,毫无疑问,Android 至今在移动操作系统的市场份额占据绝对领先地位,但是 Android 仍然存在不少问题,碎片化问题严重,在平板以及大屏幕设备上表现糟糕,...

linux-tao
29分钟前
1
0
List、Array与ArrayList

数组在内存中是连续存储的,所以它的索引速度很快,而且赋值和修改元素也非常快,比如: string[] s=new string[3];//赋值 s[0]="a"; s[1]="b"; s[2]="c";//修改 s[1]="b1"; 但是数组...

shimmerkaiye
31分钟前
0
0
Linux 的Lnmp环境下为mysql添加环境变量

一.问题 在Linux 安装完Lnmp 环境后 , 连接Mysql 告诉没有这条命令 mysql -uroot -p 命令失效 因为是源码安装的,所以会出现这样的的原因 。集成环境是不会出现的。 其实很简单,只需要给m...

15834278076
33分钟前
3
0
apolloxlua include函数

include函数不是单独使用的函数, 他并不是标准库的一部分, 你可以使用include函数将某个后缀为 .aop的文档包含到你的文档流中。 因为include是单独处理流, 所以不会在主处理流程中有所表示...

钟元OSS
37分钟前
0
0
【转载分享】做一名较真的工程师

近些年与我共事过的同事,一定知道我至今仍有一个较真的性格。我会:指出同事所写代码的不当命名问题(并帮助改进);指出同事所写文档中的逻辑混乱问题(并辅以修订);指出同事所写PPT中乱...

HellerZhang
38分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部