如何在包之间共享服务器上下文
How to share a server context between packages
我对使用光纤还很陌生,正在努力在一个包中创建一个服务器,然后在另一个包中共享上下文。
// package main
func init() {
// Init server
globs.InitServer()
}
func main() {
globs.Server.Get("/hello", handlers.HelloWorld)
}
并且我正在将服务器初始化为;
// package globs
// global vars
var (
Conf map[string]string
DBPool *pgxpool.Pool
Loggi *zap.Logger
Server *fiber.App
)
func InitServer() {
srv := fiber.New()
srv.Use(logger.New())
Server = srv
Server.Listen(":3000")
}
最后,我正在尝试将控制器处理为;
// package handlers
func HelloWorld(c *fiber.Ctx) error {
globs.Loggi.Info("Says Hello")
return c.SendString("Hello, World !")
}
我在编译过程中没有收到任何错误,应用程序启动正常,但它无法识别任何路由。如果我转到“/hello”,它会给出 404 并显示“Cannot GET /hello”
您正在 init
函数中调用 Server.Listen
。 Server.Listen
不会 return 直到监听失败,所以你必须在设置完所有内容后将其移动到 main 的末尾。
我对使用光纤还很陌生,正在努力在一个包中创建一个服务器,然后在另一个包中共享上下文。
// package main
func init() {
// Init server
globs.InitServer()
}
func main() {
globs.Server.Get("/hello", handlers.HelloWorld)
}
并且我正在将服务器初始化为;
// package globs
// global vars
var (
Conf map[string]string
DBPool *pgxpool.Pool
Loggi *zap.Logger
Server *fiber.App
)
func InitServer() {
srv := fiber.New()
srv.Use(logger.New())
Server = srv
Server.Listen(":3000")
}
最后,我正在尝试将控制器处理为;
// package handlers
func HelloWorld(c *fiber.Ctx) error {
globs.Loggi.Info("Says Hello")
return c.SendString("Hello, World !")
}
我在编译过程中没有收到任何错误,应用程序启动正常,但它无法识别任何路由。如果我转到“/hello”,它会给出 404 并显示“Cannot GET /hello”
您正在 init
函数中调用 Server.Listen
。 Server.Listen
不会 return 直到监听失败,所以你必须在设置完所有内容后将其移动到 main 的末尾。