日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame路由注冊-函數(shù)注冊

函數(shù)注冊

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

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站制作、沁水網(wǎng)絡(luò)推廣、成都微信小程序、沁水網(wǎng)絡(luò)營銷、沁水企業(yè)策劃、沁水品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供沁水建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

func (s *Server) BindHandler(pattern string, handler interface{})

我們可以直接通過?BindHandler?方法完成回調(diào)函數(shù)的注冊,在框架的開發(fā)手冊中很多地方都使用了回調(diào)函數(shù)注冊的方式來做演示,因?yàn)檫@種注冊方式比較簡單。

使用示例

Hello World

我們來看一個簡單的示例:

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í)行后,我們訪問 http://127.0.0.1:8199 可以看到我們熟悉的內(nèi)容。

包方法注冊

注冊的路由函數(shù)可以是一個包方法,例如:

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()
}

在該示例中,我們通過包方法的形式來注冊路由。該方法返回總共訪問的次數(shù),由于涉及到并發(fā)安全,因此?total?變量使用了?gtype.Int?并發(fā)安全類型。執(zhí)行后,當(dāng)我們不停訪問 ?http://127.0.0.1:8199/total? 時,可以看到返回的數(shù)值不停遞增。

對象方法注冊

注冊的路由函數(shù)可以是一個對象的方法,例如:

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)的效果一致,但我們使用了對象來封裝業(yè)務(wù)邏輯所需的變量,使用回調(diào)函數(shù)注冊來靈活注冊對應(yīng)的對象方法。


新聞名稱:創(chuàng)新互聯(lián)GoFrame教程:GoFrame路由注冊-函數(shù)注冊
網(wǎng)址分享:http://www.5511xx.com/article/cdpsiie.html