常见问答
我在哪里可以找到中间件资源?
可以查看 martini-contrib 项目. 如果看了觉得没有什么好货色, 可以联系martini-contrib的团队成员为你创建一个新的代码资源库.
- acceptlang - 解析
Accept-Language
HTTP报头的处理器。 - accessflags - 启用访问控制处理器.
- auth - 认证处理器。
- binding - 映射/验证raw请求到结构体(structure)里的处理器。
- cors - 提供支持 CORS 的处理器。
- csrf - 为应用提供CSRF防护。
- encoder - 提供用于多种格式的数据渲染或内容协商的编码服务。
- gzip - 通过giz方式压缩请求信息的处理器。
- gorelic - NewRelic 中间件
- logstasher - logstash日志兼容JSON中间件
- method - 通过请求头或表单域覆盖HTTP方法。
- oauth2 - 基于 OAuth 2.0 的应用登录处理器。支持谷歌、Facebook和Github的登录。
- permissions2 - 跟踪用户,登录状态和权限控制器
- render - 渲染JSON和HTML模板的处理器。
- secure - 提供一些安全方面的速效方案。
- sessions - 提供
Session
服务支持的处理器。 - sessionauth - 提供简单的方式使得路由需要登录, 并在Session中处理用户登录
- strip - 用于过滤指定的URL前缀。
- strip - URL前缀剥离。
- staticbin - 从二进制数据中提供静态文件服务的处理器。
- throttle - 请求速率调节中间件.
- vauth - 负责webhook认证的处理器(目前支持GitHub和TravisCI)。
- web - hoisie web.go's Context
我如何整合到我现有的服务器中?
由于Martini实现了 http.Handler
, 所以它可以很简单的应用到现有Go服务器的子集中. 例如说这是一段在Google App Engine中的示例:
- package hello
- import (
- "net/http"
- "github.com/go-martini/martini"
- )
- func init() {
- m := martini.Classic()
- m.Get("/", func() string {
- return "Hello world!"
- })
- http.Handle("/", m)
- }
我如何修改port/host?
Martini的Run
函数会检查PORT和HOST的环境变量并使用它们. 否则Martini将会默认使用localhost:3000如果想要自定义PORT和HOST, 使用martini.RunOnAddr
函数来代替.
- m := martini.Classic()
- // ...
- m.RunOnAddr(":8080")