»
(16)Web服务
寻找Go语言的Web服务器还得用百度。百度广告推荐课程最多的,前几个讲的Go语言Web框架,基本上就是最为流行、最为稳定、最为好用的。
在这里,我选用了beego。
敢于基于Go语言开发Web服务的原因,是因为就像gcc一样,Go语言的编译环境开源,所以,任何人在需要的时候可以给自己的Go语言编译器打补丁。同样,beego服务器也开源。
以下讲Go语言Web框架beego
beego是一个Web框架,它集成了脚手架工具:
1、安装beego环境(go语言环境1.17之后的版本):
go install github.com/beego/bee/v2@latest
2、新建beego项目:
bee new gameServer
3、打开IDE,开发功能代码:
新建beego工程后,bee已经给你建好了包结构:controllers是控制器,负责处理请求;views是界面模板,负责呈现页面html代码;static是静态资源文件,包括css、img和js;models用于存放自己定义的业务模型。
bee新建的工程代码中包含了一个简单的例子:处理url路径为“/”的Get请求。
其中,url路径的配置在routers文件夹的router.go中。也就是所有的请求路径都需要列举在这个router.go文件中,代码总负责一目了然。
在这个文件中beego.Router()方法可以带第三个参数,也就是这个路径支持的请求方式,比如Get、Post等等。配置第三个参数后,beego会依据前端的请求方式不同调用Controller中的不同函数。
在每个Controller中,可以暴露给前端请求的方法有以下几种:
Get()
Post()
Delete()
Put()
Head()
Patch()
Options()
Trace()
在Controller中获取参数的方法有以下几种:
// 获取URL参数:
id := c.GetString(":id")
// 获取表单数据字段:
username := c.GetString("username")
password := c.GetString("password")
// 获取Form表单提交的数据对象:
c.Ctx.Input.Bind(&user, "form")
// 获取application/json的请求数据:
var user User
json.Unmarshal(c.Ctx.Input.RequestBody, &user)
// 获取method="post",enctype="multipart/form-data"的文件数据
file, header, err := c.GetFile("file")
在Controller的返回值中,可以设定c.TplName="index.tpl"来指定显示模板,也可以使用c.ServerJson()来直接返回json数据。
在c.TplName指定的模板文件中,使用“{{.Website}}”,其中的"Website"对应Controller中设定值时用的key,即:c.Data["Website"] = "beego.vip"中的"Website"。
好了,beego的Web服务器开发就这么简单,有了这些概念基本上就可以开发逻辑代码了。