下面是一个例子:
- /user
- /user/profile
- /user/signup
myGroup.Group("/messages", optionalUserMessagesMiddleware)
myGroup.Handle("GET', "/{id}", getMessageByID)
- /user/messages/{id}
这意味着像 /{path *wildcard},
/user/{username},/user/static
和 /user/{path *wildcard} 可以注册在同一个路由里而且可以被正确地映射到静态路径 (/user/static) 或 通配符 (/{path *wildcard})
路由:自定义HTTP错误(Router: Custom HTTP Errors)你可以注册一个处理器(handler)并对应一个’错误’代码 。HTTP 错误代码是一个 >=400 的状态码,例如 NotFound 404 。
下面是一个例子:
上面的大多数Web框架只支持注册 404,405 和 500 错误代码,但是像 Iris,
Beego和 Revel 这些提供完整功能的框架支持任何状态代码甚至 任何错误(any error)代码(只有Iris支持 任何错误 ) 。
100%与 net/http 兼容(100%compatible with net/http)这意味着:
- 框架提供了上下文(context)让你可以直接访问 *http.Request和 和 http.ResponseWriter 。
- 你可以把 net/http 处理器(handler)转化到一个特定框架下的处理器(Handler) 。
Sinatra风格的API(Sinatra-like API)在运行时注册处理器来处理特定HTTP方法的路由(和路径参数) 。
下面是一个例子:
服务器: 自动HTTPS(Server: Automatic HTTPS)框架的服务器支持注册和自动更新SSL证书来管理SSL/TLS传入连接(https) 。最着名的自动HTTPS提供者是letsencrypt 。
服务器: 正常关机(Server: Gracefully Shutdown)当按下 CTRL+C 关闭终端应用程序时,服务器将正常地停止,它会等待一些连接完成它们的工作(在设定的时间内),或者触发一个自定义的事件来做清理(例如关闭数据库) 。
服务器: 多监听器(Server: Multi Listeners)框架的服务器支持注册自定义 net.Listener 或者可以通过多个 http 服务器和地址来服务web应用 。
完全支持HTTP/2(Full HTTP/2)框架支持HTTP/2,包括https和服务器 Push 功能 。
子域(Subdomains)你可以直接在你的Web应用里按子域(subdomain) 直接注册路由 。
secondary 是指框架不支持该功能但是你依然可以通过启用多个http服务器来实现 。坏处是主应用程序和子域并不相连而且默认情况下它们并不直接共享逻辑 。
会话(Sessions)http会话被支持并可以在你的特定处理器中使用 。
- 一些Web框架支持使用后台数据库来存储会话,以便在服务器重启之间获得持久性 。
- Buffalo 使用 gorrila 会话,这比其他的实现要慢一点点 。
func setValue(context http_context){
s := Sessions.New(http_context)
s.Set("key", "my value")
}
func getValue(context http_context){
s := Sessions.New(http_context)
myValue := s.Get("key")
}
func logoutHandler(context http_context){
Sessions.Destroy(http_context)
}
Wiki: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP_session
Websockets框架支持websocket通信协议 。实现是各不相同的 。
你应该搜索他们的例子,看看有什么适合你 。我的同事尝试了所有框架后告诉我,与其他框架相比,Iris实现了功能更强大且更简单的webosocket连接 。
Wiki: https://en.wikipedia.org/wiki/WebSocket
App 内置视图/模板(View/Templates)通常情况下,你必须将所有模板文件与你的Web应用程序的可执行文件一起打包 。应用程序App 内置意味着该框架支持与go-bindata的集成,所以最终的可执行文件包含模板,表示为 []byte 。
什么是视图引擎框架支持模板加载,模板自定义和自带模板并能在一些关键工作上帮助我们 。
视图引擎:STD(View Engine: STD)框架支持标准 html/template 解析器来加载模板 。
视图引擎:Pug(View Engine: Pug)框架支持 Pug 解析器来加载模板 。
视图引擎:Django(View Engine: Django)框架支持 Django 解析器来加载模板 。
视图引擎:Handlebars(View Engine: Handlebars)框架支持 Handlebars 解析器来加载模板 。
推荐阅读
- 程序员由于对象太多!结果溢出了
- 抓野鸡最好的方法是什么?
- 灌香肠10斤最好配方是什么?
- steam|女人在哪几个时期最“需要”男人?过来人告诉你3个时期.
- 退休|人过五十,在职场上最好不要有这4种行为,很掉价
- 工程师最值钱的证书排名是什么?
- 盘点最适宜春天的10种运动
- 春季最适合宝宝吃的几款粥
- 我国顶级的4所科技大学是什么?
- 益生菌哪个品牌的比较好一点?