第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

創(chuàng)建路由模塊 Go/Echo RestAPI

創(chuàng)建路由模塊 Go/Echo RestAPI

Go
慕萊塢森 2023-07-17 13:58:26
我剛剛開始學(xué)習(xí) Go,想創(chuàng)建自己的 REST API。問(wèn)題很簡(jiǎn)單:我想將 api 的路由放在不同的文件中,例如:routes/users.go,然后將其包含在“main”函數(shù)中并注冊(cè)這些路由。Echo/Go 中有大量的restAPI 示例,但它們都在 main() 函數(shù)中具有路由。我檢查了一些示例/github 入門套件,但似乎找不到我喜歡的解決方案。func main() {    e := echo.New()    e.GET("/", func(c echo.Context) error {        responseJSON := &JSResp{Msg: "Hello World!"}        return c.JSON(http.StatusOK, responseJSON)    })     //I want to get rid of this    e.GET("users", UserController.CreateUser)    e.POST("users", UserController.UpdateUser)    e.DELETE("users", UserController.DeleteUser)    //would like something like    // UserRoutes.initRoutes(e)    e.Logger.Fatal(e.Start(":1323"))}//UserController.go//CreateUser func CreateUser(c echo.Context) error {    responseJSON := &JSResp{Msg: "Create User!"}    return c.JSON(http.StatusOK, responseJSON)}//UserRoutes.gofunc initRoutes(e) { //this is probably e* echo or something like that//UserController is a package in this case that exports the CreateUser function    e.GET("users", UserController.CreateUser)     return e;}有沒(méi)有簡(jiǎn)單的方法可以做到這一點(diǎn)?來(lái)自node.js并且仍然存在一些語(yǔ)法錯(cuò)誤當(dāng)然可以解決它們,但我目前正在努力解決我的代碼架構(gòu)。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

我希望將 api 的路由放在不同的文件中,例如:routes/users.go,然后將其包含在“main”函數(shù)中并注冊(cè)這些路由。


這是可能的,只需讓包中的文件routes聲明接受實(shí)例的函數(shù)*echo.Echo并讓它們注冊(cè)處理程序即可。


// routes/users.go


func InitUserRoutes(e *echo.Echo) {

    e.GET("users", UserController.CreateUser)

    e.POST("users", UserController.UpdateUser)

    e.DELETE("users", UserController.DeleteUser)

}



// routes/posts.go


func InitPostRoutes(e *echo.Echo) {

    e.GET("posts", PostController.CreatePost)

    e.POST("posts", PostController.UpdatePost)

    e.DELETE("posts", PostController.DeletePost)

}

然后在main.go


import (

     "github.com/whatever/echo"

     "package/path/to/routes"

)


func main() {

    e := echo.New()

    routes.InitUserRoutes(e)

    routes.InitPostRoutes(e)

    // ...

}

請(qǐng)注意,這些InitXxx函數(shù)需要以大寫字母開頭,而不是您的initRoutes示例中第一個(gè)字母為小寫。這是因?yàn)槭鬃帜感懙臉?biāo)識(shí)符是unexported 的,這使得它們無(wú)法從自己的包外部訪問(wèn)。換句話說(shuō),為了能夠引用導(dǎo)入的標(biāo)識(shí)符,您必須通過(guò)使其以大寫字母開頭來(lái)導(dǎo)出它。


更多信息請(qǐng)參見: https: //golang.org/ref/spec#Exported_identifiers


查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 1 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)