registerHandlers.go
<代码>包的路由器
导入(
“. ./ctrl”
“. ./函数”
"github.com/julienschmidt/httprouter”
"net/http”
)
middleWareHandler struct类型{
r * httprouter.Router
}
func NewMiddleWareHandler (r * httprouter.Router) http。处理程序{
m:=middleWareHandler {}
m。r=返回米
}
func (m middleWareHandler) ServeHTTP http (w。ResponseWriter r * http.Request) {//检验合法性(会话)
ok:=funcs.ValidateUser(右)
如果好了==false {
函数。职责(w 1”,请先登录”,nil)
返回
}
m.r。ServeHTTP (w, r)
}
* httprouter func RegisterHandlers ()。路由器{
路由器:=httprouter.New ()
路由器。ServeFiles(“/资产/* filepath http.Dir(“资产”))//启动静态资源服务
路由器。邮报》(“/user/登录”,ctrl.Login)//登陆
路由器。邮报》(“/user/注册”,ctrl.Register)//注册
路由器。邮报》(“/联系/加入朋友”,ctrl.AddFriend)//添加好友
路由器。邮报》(“/联系/loadfriend”, ctrl.LoadFriend)//加载好友
返回路由器
}
main.go
<代码>包主要
导入(
”。/函数”
”。/路由器”
“html/模板”
“日志”
"net/http”
“运行时”
)
var (
AllConf funcs.Confs
犯错的错误
tpl * template.Template//SessionManager * funcs.Manager
)//函数init () {//SessionManager=funcs.Manager {}//}//循环渲染所有模版,路由方法
func DisplayView () {
被称为tpl,犯错=template.ParseGlob(“视图/* */*”)//错误则不必再继续
如果犯错!=nil {
log.Fatal (err.Error ())
}
_,v:=tpl.Templates范围(){
tplName:=v.Name ()
http。HandleFunc (tplName func(作家http。ResponseWriter,请求* http.Request) {
tpl。ExecuteTemplate(作家,tplName, nil)
})
}
}
函数main () {//初始化配置
如果AllConf,呃=funcs.InitConf (json);犯错!=nil {
log.Fatal (err)
}//初始化核心数
runtime.GOMAXPROCS (runtime.NumCPU ())//初始化数据库//渲染模版//DisplayView ()//注册路由
r:=router.RegisterHandlers ()
mh:=router.NewMiddleWareHandler(右)
错:=http。mh ListenAndServe (“80”)
如果犯错!=nil {
log.Fatal (err)
}
}
<人力资源/>
还可以更灵活:
main.go
<代码>包主要
导入(
”。/函数”
“html/模板”
“日志”
"net/http”
“运行时”
”。/ctrl”
)
var (
AllConf funcs.Confs
犯错的错误
tpl * template.Template//SessionManager * funcs.Manager
)//函数init () {//SessionManager=funcs.Manager {}//}//循环渲染所有模版,路由方法
func DisplayView () {
被称为tpl,犯错=template.ParseGlob(“视图/* */*”)//错误则不必再继续
如果犯错!=nil {
log.Fatal (err.Error ())
}
_,v:=tpl.Templates范围(){
tplName:=v.Name ()
http。HandleFunc (tplName func(作家http。ResponseWriter,请求* http.Request) {
tpl。ExecuteTemplate(作家,tplName, nil)
})
}
}
函数main () {//初始化配置
如果AllConf,呃=funcs.InitConf (json);犯错!=nil {
log.Fatal (err)
}//初始化核心数
runtime.GOMAXPROCS (runtime.NumCPU ())//初始化数据库
http。处理(“/user/登录”,http.HandlerFunc (ctrl.Login))//登陆
http。处理(“/user/注册”,http.HandlerFunc (ctrl.Register))//注册
http。处理(“/联系/加入朋友”,funcs.AuthLogin (http.HandlerFunc (ctrl.AddFriend)))//添加好友
http。处理(“/联系/loadfriend”, funcs.AuthLogin (http.HandlerFunc (ctrl.LoadFriend)))//加载好友
错:=http。nil ListenAndServe (“80”)
如果犯错!=nil {
log.Fatal (err)
}
}
middleWare.go
<代码>包函数
导入(
“. ./def”
“. ./模型/复述”
“编码/json”
"net/http”
)//验证是否登陆
func AuthLogin(下http.Handler) http。处理程序{
返回http。http HandlerFunc (func (w。ResponseWriter r * http.Request) {//验证……
})
}
ctrl/addFriend.go
ctrl <代码>包
导入(
“. ./函数”
“. ./模式”
“fmt”
"net/http”
“strconv”
)
var contactModel model.Contact
func加入朋友(作家http。ResponseWriter,请求* http.Request) {
fmt.Println(“加入朋友”)
返回
}