官方文檔api-demo教程部分網(wǎng)址如下:
api demo 代碼生成 | go-zero Documentation
官方demo的架構(gòu)如下:
編輯
etc包下:
demo-api.yaml
編輯
服務(wù)名稱:demo-api
HOST地址:0.0.0.0監(jiān)聽(tīng)所有可用網(wǎng)絡(luò)接口
Port地址:服務(wù)運(yùn)行在8888端口
internal包下:
config/config.go
編輯
存儲(chǔ)config信息,這里rest.RestConf是RESTful API的結(jié)構(gòu)體,此外還可以添加數(shù)據(jù)庫(kù),緩存配置信息
handler/demohandler.go
編輯
輸入SvcContext(后面自己定義),返回HandlerFunc函數(shù)
三個(gè)過(guò)程:
解析request的類型,解析錯(cuò)誤,返回error(下圖為httpx.ErrorCtx源碼)編輯
l := logic.NewDemoLogic(r.Context(), svcCtx)的相關(guān)代碼是我們后面自己定義,
l.Demo實(shí)際上充當(dāng)了業(yè)務(wù)邏輯的處理過(guò)程
失敗,返回報(bào)錯(cuò),成功,則帶上OK(200狀態(tài)碼)返回
handler/routes.go
編輯
這個(gè)文件夾的代碼由goctl自動(dòng)生成,注冊(cè)路由,方法是get,路徑是/from/:name(:name代表路徑有一個(gè)名為name的參數(shù),在后面定義了這個(gè)name類型的參數(shù))
[]rest.Route代表了該類型的切片,包含了定義路由的那個(gè)結(jié)構(gòu)體
logic/demologic.go
編輯在demhandler中用到的代碼
DemoLogic結(jié)構(gòu)體:logger(用于記錄日志),ctx(請(qǐng)求的上下文信息),svcCtx(服務(wù)相關(guān)的信息,數(shù)據(jù)庫(kù)連接,緩存實(shí)例)
NewDemoLogic就是用于New一個(gè)DemoLogic實(shí)例
Demo方法就是處理request,構(gòu)造response的方法,具體的業(yè)務(wù)邏輯代碼
type是后面定義的
svc/servicecontext.go
用途是通過(guò)創(chuàng)建svcCtx來(lái)訪問(wèn)config字段,套娃,增強(qiáng)代碼的解藕性
types/types.go
goctl自動(dòng)生成,request和response結(jié)構(gòu)體長(zhǎng)得樣子
name類型被定義,可選為you或者me
demo.api
生成routes.go和types.go的文件依據(jù),注冊(cè)api處理的handler
采用proto3語(yǔ)法(一種數(shù)據(jù)交換格式)
demo.go
主文件,有如下步驟文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-800044.html
- 解析命令行參數(shù)
- 加載配置文件到結(jié)構(gòu)體c中
- 新建一個(gè)rest服務(wù)器實(shí)例
- 創(chuàng)建服務(wù)上下文。注冊(cè)handler處理函數(shù)
- 啟動(dòng)rest服務(wù)器
啟動(dòng)服務(wù)
測(cè)試
與預(yù)期結(jié)果相符合文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800044.html
到了這里,關(guān)于GoZero微服務(wù)個(gè)人探究之路(二)Go-Zero官方api demo示例探究的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!