@@ -275,7 +275,7 @@ func (app *DotWeb) ListenAndServe(addr string) error {
275275 app .initBindMiddleware ()
276276
277277 if app .StartMode == StartMode_Classic {
278- app .UseDotwebRouter ()
278+ app .IncludeDotwebGroup ()
279279 }
280280
281281 if app .HttpServer .ServerConfig ().EnabledTLS {
@@ -402,21 +402,67 @@ func (app *DotWeb) initRegisterConfigGroup() {
402402// init bind app's middleware to router node
403403func (app * DotWeb ) initBindMiddleware () {
404404 router := app .HttpServer .Router ().(* router )
405- for path , node := range router .allNodeMap {
405+ //bind app middlewares
406+ for fullExpress , _ := range router .allRouterExpress {
407+ expresses := strings .Split (fullExpress , "_" )
408+ if len (expresses ) < 2 {
409+ continue
410+ }
411+ node := router .getNode (expresses [0 ], expresses [1 ])
412+ if node == nil {
413+ continue
414+ }
415+
406416 node .appMiddlewares = app .Middlewares
407417 for _ , m := range node .appMiddlewares {
408418 if m .HasExclude () && m .ExistsExcludeRouter (node .fullPath ) {
409- logger .Logger ().Debug ("DotWeb initBindMiddleware " + path + " " + reflect .TypeOf (m ).String ()+ " exclude" , LogTarget_HttpServer )
419+ logger .Logger ().Debug ("DotWeb initBindMiddleware [app] " + fullExpress + " " + reflect .TypeOf (m ).String ()+ " exclude" , LogTarget_HttpServer )
410420 node .hasExcludeMiddleware = true
411421 } else {
412- logger .Logger ().Debug ("DotWeb initBindMiddleware " + path + " " + reflect .TypeOf (m ).String ()+ " match" , LogTarget_HttpServer )
422+ logger .Logger ().Debug ("DotWeb initBindMiddleware [app] " + fullExpress + " " + reflect .TypeOf (m ).String ()+ " match" , LogTarget_HttpServer )
423+ }
424+ }
425+ if len (node .middlewares ) > 0 {
426+ firstMiddleware := & xMiddleware {}
427+ firstMiddleware .SetNext (node .middlewares [0 ])
428+ node .middlewares = append ([]Middleware {firstMiddleware }, node .middlewares ... )
429+ }
430+ }
431+
432+ //bind group middlewares
433+ for _ , g := range app .HttpServer .groups {
434+ xg := g .(* xGroup )
435+ if len (xg .middlewares ) <= 0 {
436+ continue
437+ }else {
438+ firstMiddleware := & xMiddleware {}
439+ firstMiddleware .SetNext (xg .middlewares [0 ])
440+ xg .middlewares = append ([]Middleware {firstMiddleware }, xg .middlewares ... )
441+ }
442+ for fullExpress , _ := range xg .allRouterExpress {
443+ expresses := strings .Split (fullExpress , "_" )
444+ if len (expresses ) < 2 {
445+ continue
446+ }
447+ node := router .getNode (expresses [0 ], expresses [1 ])
448+ if node == nil {
449+ continue
450+ }
451+ node .groupMiddlewares = xg .middlewares
452+ for _ , m := range node .groupMiddlewares {
453+ if m .HasExclude () && m .ExistsExcludeRouter (node .fullPath ) {
454+ logger .Logger ().Debug ("DotWeb initBindMiddleware [group] " + fullExpress + " " + reflect .TypeOf (m ).String ()+ " exclude" , LogTarget_HttpServer )
455+ node .hasExcludeMiddleware = true
456+ } else {
457+ logger .Logger ().Debug ("DotWeb initBindMiddleware [group] " + fullExpress + " " + reflect .TypeOf (m ).String ()+ " match" , LogTarget_HttpServer )
458+ }
413459 }
414460 }
415461 }
416462}
417463
418- // init inner routers
419- func (app * DotWeb ) UseDotwebRouter () {
464+ // IncludeDotwebGroup init inner routers
465+ func (app * DotWeb ) IncludeDotwebGroup () {
420466 //默认支持pprof信息查看
421467 gInner := app .HttpServer .Group ("/dotweb" )
422468 gInner .GET ("/debug/pprof/:key" , initPProf )
@@ -548,7 +594,7 @@ func showIntervalData(ctx Context) error {
548594
549595//显示服务器状态信息
550596func showServerState (ctx Context ) error {
551- ctx .WriteString (core .GlobalState .ShowHtmlData ())
597+ ctx .WriteHtml (core .GlobalState .ShowHtmlData ())
552598 return nil
553599}
554600
0 commit comments