github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/project_generator/resources/server.http.go.tmpl (about)

     1  {{- /*gotype: github.com/yoogoc/kratos-scaffold/project_generator.ServerTmpl*/ -}}
     2  package server
     3  
     4  import (
     5  	stdhttp "net/http"
     6  
     7  	"github.com/go-kratos/kratos/v2/log"
     8  	"github.com/go-kratos/kratos/v2/middleware/recovery"
     9  	"github.com/gorilla/handlers"
    10  	"{{.AppPkgPath}}/internal/conf"
    11  
    12  	"github.com/go-kratos/kratos/v2/middleware/logging"
    13  	"github.com/go-kratos/kratos/v2/transport/http"
    14  )
    15  
    16  // NewHTTPServer new an HTTP server.
    17  func NewHTTPServer(c *conf.Server, logger log.Logger) *http.Server {
    18  	var opts = []http.ServerOption{
    19  		http.Middleware(
    20  			recovery.Recovery(),
    21  			//tracing.Server(tracing.WithTracerProvider(tp)),
    22  			logging.Server(logger),
    23  		),
    24  		http.Filter(handlers.CORS(
    25  			handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"}),
    26  			handlers.AllowedMethods([]string{"GET", "POST", "PUT", "HEAD", "OPTIONS"}),
    27  			handlers.AllowedOrigins([]string{"*"}),
    28  		)),
    29  		//http.ErrorEncoder(DefaultErrorEncoder),
    30  	}
    31  	if c.Http.Network != "" {
    32  		opts = append(opts, http.Network(c.Http.Network))
    33  	}
    34  	if c.Http.Addr != "" {
    35  		opts = append(opts, http.Address(c.Http.Addr))
    36  	}
    37  	if c.Http.Timeout != nil {
    38  		opts = append(opts, http.Timeout(c.Http.Timeout.AsDuration()))
    39  	}
    40  	srv := http.NewServer(opts...)
    41  
    42  	health(srv)
    43  
    44  	return srv
    45  }
    46  
    47  func health(s *http.Server)  {
    48  	s.HandleFunc("/health", func(w stdhttp.ResponseWriter, r *stdhttp.Request) {
    49  		w.WriteHeader(200)
    50  		_, _ = w.Write([]byte("OK"))
    51  	})
    52  }