虽然go语言和Java语言一样都是采用了restful的编程风格,但略有不同的是go语言的所有请求路由会单独抽出来放置在一个文件内,采用的是:
beego.Router("/task", &controllers.TaskController{}, "get:ListTasks; post:NewTask")或者正则匹配的形式
beego.Router("/download/*.*", &controllers.RController{})默认的请求方法(请求的method和函数名一致)
函数名分为这样几种:
- get:GET请求,请求指定的页面信息,并返回实体主体
- post:POST请求,请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
- put:PUT请求,从客户端向服务器传送的数据取代指定的文档的内容
- delete:DELETE请求,请求服务器删除指定的页面。
- patch:PATCH请求, 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
- head:HEAD请求,只请求页面的首部
而JAVA的请求url会直接出现在方法的前一行。
如第一个beego.Router设置一样,一个路径包含了两个方法,那么当请求时,程序如何判断选择哪个方法执行呢?具体的机制不太了解,但可以肯定的时,无论多少个请求共用了一个路径,方法之间一定有本身的特异性,不然就没必要分开成两个方法,如之前的表达式,post的NewTask方法除了路径之外,必然还带有某个实体对象,而get的ListTasks方法只是请求所有列表,因此这个实体对象或者参数会被go的机制所检测出来,做为执行哪个方法的条件。