初学者指南
在我们开始之前,必须明确的一点就是,文档不会教授您任何有关 Go 语言 的基础知识。所有对 Macaron 使用的讲解均是基于您已有的知识基础上展开的。
通过执行以下命令来安装 Macaron:
go get gopkg.in/macaron.v1
并且可以在今后使用以下命令来升级 Macaron:
go get -u gopkg.in/macaron.v1
创建一个名为
main.go
的文件,然后输入以下代码:package main
import "gopkg.in/macaron.v1"
func main() {
m := macaron.Classic()
m.Get("/", func() string {
return "Hello world!"
})
m.Run()
}
接下来,就可以执行命令
go run main.go
运行程序。您应该在程序启动后看到一条日志信息:[Macaron] listening on 0.0.0.0:4000 (development)
现在,让我们对
main.go
做出一些修改,以便进行更多的练习。package main
import (
"log"
"net/http"
"gopkg.in/macaron.v1"
)
func main() {
m := macaron.Classic()
m.Get("/", myHandler)
log.Println("Server is running...")
log.Println(http.ListenAndServe("0.0.0.0:4000", m))
}
func myHandler(ctx *macaron.Context) string {
return "the request path is: " + ctx.Req.RequestURI
}
当您再次执行命令
go run main.go
运行程序的时候,您会看到屏幕上显示的内容为 the request path is: /
。那么,是什么改变了事物原本的样貌?(答:爱情)
首先,我们依旧使用了 经典 Macaron 来为根路径
/
注册针对 HTTP GET 请求的路由。但我们不再使用匿名函数,而是改用名为 myHandler
的函数作为处理器。需要注意的是,注册路由时,不需要在函数名称后面加上括号,因为我们不需要在此时调用这个函数。函数
myHandler
接受一个类型为 *macaron.Context
的参数,并返回一个字符串。您可能已经发现我们并没有告诉 Macaron 需要传递什么参数给处理器,而且当您查看 m.Get
方法的声明时会发现,Macaron 实际上将所有的处理器(macaron.Handler
)都当作类型 interface{}
来处理。那么,Macaron 又是怎么知道需要传递什么参数来调用处理器并执行逻辑的呢?和之前的例子一样,我们需要让服务器监听在某个地址上。这一次,我们使用 Go 标准库的函数
http.ListenAndServe
来完成这项操作。如此一来,您便可以发现,任一 Macaron 实例 都是和标准库完全兼容的。您现在已经知道怎么基于 Macaron 来书写简单的代码,请尝试修改上文中的两个示例,并确保您已经完全理解上文中的所有内容。
当您觉得自己已经原地满血复活后,就可以继续学习之后的内容了。
Last modified 3yr ago