《Web Development with Go》Middleware之使用codegangsta.negroni
2024-08-30 01:51:47
这个第三方库,使用自定义中间件时,
语法就感觉流畅很多。
package main import ( "fmt" "log" "net/http" //"time" "github.com/codegangsta/negroni" ) func middlewareFirst(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { log.Println("MiddlewareFirst - Before Handler") next.ServeHTTP(w, r) log.Println("MiddlewareFirst - After Handler") } func middlewareSecond(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { log.Println("MiddlewareSecond - Before Handler") if r.URL.Path == "/message" { if r.URL.Query().Get("password") == "password" { log.Println("Authorized to the system") next.ServeHTTP(w, r) } else { log.Println("Failed to authorize to the system") return } } else { next.ServeHTTP(w, r) } log.Println("MiddlewareSecond - After Handler") } func index(w http.ResponseWriter, r *http.Request) { log.Println("Executing index handler") fmt.Fprintf(w, "welcome!") } func message(w http.ResponseWriter, r *http.Request) { log.Println("Executing message handler") fmt.Fprintf(w, "HTTP Middleware is awesome!") } func iconHandler(w http.ResponseWriter, r *http.Request) { } func main() { mux := http.NewServeMux() mux.HandleFunc("/favicon", iconHandler) mux.HandleFunc("/", index) mux.HandleFunc("/message", message) n := negroni.Classic() n.Use(negroni.HandlerFunc(middlewareFirst)) n.Use(negroni.HandlerFunc(middlewareSecond)) n.UseHandler(mux) n.Run(":8080") }
最新文章
- Python 3.6.0的sqlite3模块无法执行VACUUM语句
- Spring声明式事务管理基于tx/aop命名空间
- Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则
- Timer类和TimerTask类
- php protected封装
- JQuery 的bind和unbind函数
- ecshop中index.dwt文件分析
- android内存优化发展——使用软引用
- Linux启动新进程的几种方法及比较[转]
- 在python&;numpy中切片(slice)
- 【转】QQ传输文件原理参考(来自互联网)
- NetSec2019 20165327 EXP5 MSF基础应用
- js 字符串截取函数substr,substring,slice之间的差异
- linux软件安装、rpm操作命令、本地yum配置(有什么用)
- 059 SparkStream介绍
- drf 分页
- (笔记)Linux内核中ioremap映射的透彻理解
- 使用Fiddler发送POST请求
- 【实战项目】【FLEX】#900 实现拖控件功能
- Android调试大法 自定义IDE默认签名文件==>;微信支付、微信登录、微信分享,debug时调试通过,release时调不起微信