文档章节

第三方库mux的基本实践

v
 veliamsli
发布于 2015/04/16 23:18
字数 257
阅读 26
收藏 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")



© 著作权归作者所有

共有 人打赏支持
上一篇: 随心而言
下一篇: wireshark插件开发
v
粉丝 0
博文 4
码字总数 1163
作品 0
广州
技术主管
私信 提问
ffmpeg转码在安卓平台运行速度过慢。各位有优化方法吗?

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

志尧仔
2016/04/19
4.5K
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
基于Go语言快速构建RESTful API服务

In this post, we will not only cover how to use Go to create a RESTful JSON API, but we will also talk about good RESTful design. 部分内容删减调整,原文请查看: Making a RESTful......

RiboseYim
2017/05/24
0
1
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

没有更多内容

加载失败,请刷新页面

加载更多

安卓constraintLayout中app:srcCompat设置的图片显示不出来

使用 app:srcCompat 的时候 引入的图片显示不出来的解决方案 首先查看的你的Activity 继承的是那个Activity 如果是继承AppcompatActivity 使用 ImageView的 app:srcCompat 是没有问题的 如果...

雨焰
45分钟前
1
0
MySQL mysqldump数据导出详解

MySQL mysqldump数据导出详解 2016-04-07 11:14 by pursuer.chen, 114348 阅读, 0 评论, 收藏, 编辑 介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用...

linjin200
45分钟前
1
0
Lucene 检索时的步骤

用户输入查询语句:lucene AND learned NOT hadoop 搜索主要分为以下几步 第一步、对查询语句进行词法分析,语法分析,及语言处理 词法分析主要用来识别单词和关键字 语法分析主要是根据查询...

kdy1994
46分钟前
2
0
Gradle Implementation vs API configuration

注: 可以把 Implementation理解为java类的private, 使用Implementation则外部依赖本库的代码引用不到本库Implementation的代码, 也就是降低依赖树的层级, 这样就可以避免外部代码编译时候, 导...

SuShine
50分钟前
2
0
pdf安卓手机适配以及ie的兼容 以及隐藏掉下载打印按钮的方式

这是我目前遇到pdf方面最多的问题。 在百度上搜了很多答案,结果都是建议使用插件。而目前百度能搜的插件基本上都是有缺陷的。自己测试了很多插件。最后使用了pdf.js这个插件。这个插件目前完...

流年那么伤
56分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部