新聞中心
函數(shù)注冊(cè)
函數(shù)注冊(cè)方式是最簡(jiǎn)單且最靈活的的路由注冊(cè)方式,注冊(cè)的服務(wù)可以是一個(gè)實(shí)例化對(duì)象的方法地址,也可以是一個(gè)包方法地址。服務(wù)需要的數(shù)據(jù)可以通過(guò)模塊內(nèi)部變量形式或者對(duì)象內(nèi)部變量形式進(jìn)行管理,開(kāi)發(fā)者可根據(jù)實(shí)際情況進(jìn)行靈活控制。相關(guān)方法:

成都創(chuàng)新互聯(lián)公司專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站制作、沁水網(wǎng)絡(luò)推廣、成都微信小程序、沁水網(wǎng)絡(luò)營(yíng)銷(xiāo)、沁水企業(yè)策劃、沁水品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供沁水建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
func (s *Server) BindHandler(pattern string, handler interface{})我們可以直接通過(guò)?BindHandler?方法完成回調(diào)函數(shù)的注冊(cè),在框架的開(kāi)發(fā)手冊(cè)中很多地方都使用了回調(diào)函數(shù)注冊(cè)的方式來(lái)做演示,因?yàn)檫@種注冊(cè)方式比較簡(jiǎn)單。
使用示例
Hello World
我們來(lái)看一個(gè)簡(jiǎn)單的示例:
package main
import (
"github.com/GOgf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request) {
r.Response.Write("哈嘍世界!")
})
s.SetPort(8199)
s.Run()
}執(zhí)行后,我們?cè)L問(wèn) http://127.0.0.1:8199 可以看到我們熟悉的內(nèi)容。
包方法注冊(cè)
注冊(cè)的路由函數(shù)可以是一個(gè)包方法,例如:
package main
import (
"github.com/gogf/gf/v2/container/gtype"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
var (
total = gtype.NewInt()
)
func Total(r *ghttp.Request) {
r.Response.Write("total:", total.Add(1))
}
func main() {
s := g.Server()
s.BindHandler("/total", Total)
s.SetPort(8199)
s.Run()
}在該示例中,我們通過(guò)包方法的形式來(lái)注冊(cè)路由。該方法返回總共訪問(wèn)的次數(shù),由于涉及到并發(fā)安全,因此?total?變量使用了?gtype.Int?并發(fā)安全類(lèi)型。執(zhí)行后,當(dāng)我們不停訪問(wèn) ?http://127.0.0.1:8199/total? 時(shí),可以看到返回的數(shù)值不停遞增。
對(duì)象方法注冊(cè)
注冊(cè)的路由函數(shù)可以是一個(gè)對(duì)象的方法,例如:
package main
import (
"github.com/gogf/gf/v2/container/gtype"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
type Controller struct {
total *gtype.Int
}
func (c *Controller) Total(r *ghttp.Request) {
r.Response.Write("total:", c.total.Add(1))
}
func main() {
s := g.Server()
c := &Controller{
total: gtype.NewInt(),
}
s.BindHandler("/total", c.Total)
s.SetPort(8199)
s.Run()
}該示例與示例1的實(shí)現(xiàn)的效果一致,但我們使用了對(duì)象來(lái)封裝業(yè)務(wù)邏輯所需的變量,使用回調(diào)函數(shù)注冊(cè)來(lái)靈活注冊(cè)對(duì)應(yīng)的對(duì)象方法。
文章標(biāo)題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame路由注冊(cè)-函數(shù)注冊(cè)
本文鏈接:http://www.5511xx.com/article/cdpsiie.html


咨詢(xún)
建站咨詢(xún)
