文档章节

第三方库mux的基本实践

v
 veliamsli
发布于 2015/04/16 23:18
字数 257
阅读 23
收藏 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
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
实现一个 RESTful API 服务器

RESTful 是目前最为流行的一种互联网软件结构。因为它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。 什么是 REST REST(REpresentational State Transfer),首次...

Chars
07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Netkiller Java 手札》· 二进制文件操作大全

本文节选自《Netkiller Java 手札》 Netkiller Java 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com> $Id: book.xml 6......

netkiller-
22分钟前
1
0
Fiddler Debugger post请求

常用的两种: 第一种默认的 对应URL为www 的要用请求头为:Content-Type: application/x-www-form-urlencoded 请求参数为 :param1=1234¶m2=12345 注:有些接口是指定用这种的第二方式并不...

轻量级赤影
29分钟前
2
0
如何搭建母婴亲子类知识社区

近期社交领域融资动作频繁,海尔高管、海尔医疗有限公司总裁管礼庆创办的母婴知识分享社区平台Alwayslove于上月获得700万天使轮融资。 Alwayslove是一个母婴知识分享社区平台,采用UGC模式,...

ThinkSNS账号
31分钟前
1
0
Android 自定义构建类型 BuildType

最近接触到自定义构建类型 BuildType,发现这一块有些地方稍不注意的话会被绕进去浪费点时间,既然我这边已经花费时间了,如果正好你也需要接触到 BuildType,也许接下来分享的 tips 可能会帮...

猴亮屏
32分钟前
1
0
美团点评基于 Flink 的实时数仓建设实践

引言 近些年,企业对数据服务实时化服务的需求日益增多。本文整理了常见实时数据组件的性能特点和适用场景,介绍了美团如何通过 Flink 引擎构建实时数据仓库,从而提供高效、稳健的实时数据服...

美团技术团队
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部