簡體   English   中英

Golang調用/調用子項目的最佳方法

[英]Golang best way of calling/invoking sub project

林正從我的項目PHPGolang ,我看叫/調用/處理控制的有效途徑sub project main.gosrc main.go ,我想從通過控制

http://localhost/  =>   http://localhost/sub-project1/
http://localhost/  =>   http://localhost/sub-project2/
http://localhost/  =>   http://localhost/sub-projectn/

我是Golang我不知道如何以最佳方式進行操作,我的項目結構是

src/
    main.go
    sub-project1/
        main.go
    sub-project2/
        main.go
    sub-projectn/
        main.go
    gitHub.com/
        ......
    golang.org/
        ......

我正在使用httprouter進行路由,位於src下的main.go ,包含以下內容

package main
import ....

// homePageHandler
// contactPageHandler
// aboutPageHandler
// loginPageHandler
// signupPageHandler

func main() {
    router := httprouter.New()
    router.GET("/", homePageHandler)
    router.GET("/contact", contactPageHandler)
    router.GET("/about", aboutPageHandler)
    router.GET("/login", loginPageHandler)
    router.GET("/signup", signupPageHandler)

    // here I want to pass control to my sub project main.go 
    // and I don't want to write any /sub-project routing urls here,
    // because each /sub-project's contain many urls 
    router.GET("/sub-project1", ??????)
    router.GET("/sub-project2", ??????)
    router.GET("/sub-project3", ??????)
    router.GET("/sub-projectn", ??????)
}

並且所有文件都必須從src main.go傳遞,因為整個項目只有一個main()且在任何/sub-projectx main.go我想這樣做

package main
import ....
// subprojectPageHandler
// feature1PageHandler
// feature2PageHandler
// feature3PageHandler
// ........
// featurenPageHandler

func main() {
    router := httprouter.New()
    router.GET("/sub-projectx", subprojectPageHandler)
    router.GET("/sub-projectx/feature1", feature1PageHandler)
    router.GET("/sub-projectx/feature2", feature2PageHandler)
    router.GET("/sub-projectx/feature3", feature3PageHandler)
    ..........
    router.GET("/sub-projectx/featureN", featureNPageHandler)


    // here I want to pass control to my sub project main.go 
    // and I don't want to write any /sub-project routing urls here,
    // because each /sub-project's contain many urls 
    router.GET("/sub-project1", ??????)
    router.GET("/sub-project2", ??????)
    router.GET("/sub-project3", ??????)
    router.GET("/sub-projectn", ??????)
}

成為

Golang源代碼不是通過解釋器運行的,而是內置在二進制文件中的,在動態項目的情況下靈活性較低。 就是說,我會將我的項目彼此隔離,並讓Nginx (例如)負責多個項目分組。 當然,這將需要一些重構,例如創建共享軟件包等。

還是不被

如果由於某種原因,您仍然認為通過單個二進制文件運行多個項目是可以的,那是您的選擇。 在這種情況下,您可能會研究某些框架中可用的路由分組。 是Go Gin提供的

func main() {
    router := gin.Default()

    // Simple group: v1
    v1 := router.Group("/v1")
    {
        v1.POST("/login", loginEndpoint)
        v1.POST("/submit", submitEndpoint)
        v1.POST("/read", readEndpoint)
    }

    // Simple group: v2
    v2 := router.Group("/v2")
    {
        v2.POST("/login", loginEndpoint)
        v2.POST("/submit", submitEndpoint)
        v2.POST("/read", readEndpoint)
    }

    router.Run(":8080")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM