gofiber-study/main.go
2022-10-03 03:46:09 +08:00

56 lines
1.2 KiB
Go

package main
import (
"github.com/gofiber/fiber/v2"
"gofiber.study.skcks.cn/common/errorx"
"gofiber.study.skcks.cn/common/response"
"gofiber.study.skcks.cn/logger"
"os"
"os/signal"
)
var log = logger.Logger()
func main() {
app := fiber.New(fiber.Config{
Prefork: true,
CaseSensitive: true,
StrictRouting: false,
ServerHeader: "SkServer",
ErrorHandler: func(ctx *fiber.Ctx, err error) error {
code := fiber.StatusInternalServerError
if e, ok := err.(*fiber.Error); ok {
code = e.Code
}
err = ctx.Status(code).JSON(errorx.NewDefaultError(err.Error()))
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return nil
},
})
app.Get("/", func(c *fiber.Ctx) error {
log.Infof("\n%s", c.Request().String())
return c.JSON(response.NewResponse("Hello, World 👋!"))
})
app.Get("/routes", func(ctx *fiber.Ctx) error {
return ctx.JSON(response.NewResponse(app.Stack()))
})
go func() {
if err := app.Listen(":3000"); err != nil {
log.Fatalf("致命错误: %s", err)
}
}()
quit := make(chan os.Signal)
signal.Notify(quit, os.Interrupt)
<-quit
log.Infof("关闭服务")
}