Golang在搭建web服务器方面的能力是毋庸置疑的。官方已经有提供net/http包为搭建http服务器做准备。使用这个包能很简单地对web的路由,静态文件,模版,cookie等数据进行设置。至于这个包是否好用,这个就见仁见智了。你可以从net包开始封装一个web框架,当然也可以基于http包封装一个web框架。但是不论你是打算怎么样做,了解基本的net/http包一定是你借鉴的基础。
需求
我们要做两个简单的后台web系统。这个系统简单到只有两个页面:登陆和首页。
1 登陆页面
当用户名和密码正确的时候,需要在cookie中种下用户名和加密后的密钥来进行cookie认证。我们不对cookie设置ExpireTime,这样这个cookie的有效期就是浏览器打开到浏览器关闭的session期间。
另外,这个页面还需要加载一个js。提交用户名和密码的是由js进行ajax post命令进行查询的。
这个页面需要加载css,进行页面排版
首先右上角的”欢迎登陆, 管理员:yejianfeng“。这里的用户名yejianfeng是根据不同的用户会进行变化的。这里需要用到模版,我们又会用到了一个模版包html/template。这个包的作用就是加载模版。
其次这个页面也需要的是css,js(退出系统的删除cookie操作由js控制)
路由
分析下访问路径,会有几个文件:
/admin/index -- 首页
/login/index --登陆页显示
/ajax/login -- 登陆的ajax动作
/css/main.css -- 获取main的css文件
/js/login.js -- 获取登陆的js文件
在net/http包中,动态文件的路由和静态文件的路由是分开的,动态文件使用http.HandleFunc进行设置,静态文件就需要使用到http.FileServer
这里的http.FileServer(http.Dir("template"))的路径是怎么算的要注意下了。相对路径都是从当前执行路径路径下开始算的,这里设置的路径树是这样:
处理器
这里需要定制4个handler对应相应的一级路径。我们将这些个handler都放入到route.go文件中
main中的逻辑是当/admin/ /login/ /ajax/都不符合路径的时候就进入404页面处理器NotFoundHandler
12
func NotFoundHandler(w http.ResponseWriter,r *http.Request) {