in api/internal/route.go [52:110]
func SetUpRouter() *gin.Engine {
if conf.ENV == conf.EnvLOCAL || conf.ENV == conf.EnvDEV {
gin.SetMode(gin.DebugMode)
} else {
gin.SetMode(gin.ReleaseMode)
}
r := gin.New()
logger := log.GetLogger(log.AccessLog)
// security
r.Use(filter.RequestLogHandler(logger), filter.IPFilter(), filter.InvalidRequest())
// authenticate
if conf.OidcEnabled {
r.Use(filter.Oidc())
}
r.Use(filter.Authentication())
// misc
r.Use(gzip.Gzip(gzip.DefaultCompression), filter.CORS(), filter.RequestId(), filter.SchemaCheck(), filter.RecoverHandler())
r.Use(static.Serve("/", static.LocalFile(filepath.Join(conf.WorkDir, conf.WebDir), false)))
r.NoRoute(func(c *gin.Context) {
c.File(fmt.Sprintf("%s/index.html", filepath.Join(conf.WorkDir, conf.WebDir)))
})
factories := []handler.RegisterFactory{
route.NewHandler,
ssl.NewHandler,
consumer.NewHandler,
upstream.NewHandler,
service.NewHandler,
schema.NewHandler,
schema.NewSchemaHandler,
healthz.NewHandler,
authentication.NewHandler,
global_rule.NewHandler,
server_info.NewHandler,
label.NewHandler,
data_loader.NewHandler,
data_loader.NewImportHandler,
tool.NewHandler,
plugin_config.NewHandler,
migrate.NewHandler,
proto.NewHandler,
stream_route.NewHandler,
system_config.NewHandler,
}
for i := range factories {
h, err := factories[i]()
if err != nil {
panic(err)
}
h.ApplyRoute(r)
}
// pprof.Register(r)
return r
}