thread-master/apps/backend/gateway.go

49 lines
1.3 KiB
Go
Raw Normal View History

2026-07-10 12:54:45 +00:00
package main
import (
"flag"
"fmt"
"os"
"apps/backend/internal/config"
"apps/backend/internal/handler"
"apps/backend/internal/lib/securelog"
"apps/backend/internal/middleware"
"apps/backend/internal/svc"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/rest"
)
// Gateway entry (go-zero). API from goctl; DB schema from generate/database migrate.
func main() {
// 必須在 mon/monc 建立前呼叫:否則 Mongo ReplaceOne 會把 password_hash 整包打進 log
securelog.SilenceMongo()
configFile := flag.String("f", "etc/gateway.yaml", "config file")
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
c.ApplyEnv()
// 禁止 Verbose否則可能印 request body 含 password
c.RestConf.Verbose = false
server := rest.MustNewServer(c.RestConf,
rest.WithNotAllowedHandler(middleware.NewCorsMiddleware().Handler()),
)
defer server.Stop()
server.Use(middleware.NewCorsMiddleware().Handle)
ctx := svc.NewServiceContext(c)
handler.RegisterHandlers(server, ctx)
2026-07-13 01:15:30 +00:00
// 靈感 SSE streamgoctl 不生成 streaming handler
handler.RegisterInspireStream(server, ctx)
2026-07-10 12:54:45 +00:00
logx.Infof("haixun gateway %s:%d pid=%d", c.Host, c.Port, os.Getpid())
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
server.Start()
}