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 }