Documentation
¶
Overview ¶
Package component provides HTTP server lifecycle integration for bootstrap.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Component ¶
func Component(handler func() http.Handler) bootstrap.IComponent
Component wraps the HTTP server as a bootstrap.IComponent.
handler is a lazy provider called during Init() to obtain the http.Handler (typically *gin.Engine). Passing a function rather than the handler directly defers evaluation until Init() time, at which point the Gin component has already been initialised.
Typical usage with a bridge variable in main:
var router *gin.Engine
Add(ginComp.Component(func(r *gin.Engine) {
router = r
adapter.Mount(r)
})).
Add(httpComp.Component(func() http.Handler { return router }))
Example ¶
ExampleComponent shows how Component() is used in a bootstrap registration chain. It reads app.runmode and http.server.port from env during Init().
Init() starts the HTTP server in a background goroutine and returns immediately. Startup errors (e.g. port already in use) are handled asynchronously via shutdown.Trigger(). Close() gracefully drains in-flight requests.
Typical usage with a bridge variable in main:
var router *gin.Engine
Add(ginComp.Component(func(r *gin.Engine) {
router = r
adapter.Mount(r)
})).
Add(httpComp.Component(func() http.Handler { return router }))
package main
import (
"fmt"
"net/http"
httpComp "github.com/phcp-tech/common-library-golang/httpserver/component"
)
func main() {
c := httpComp.Component(func() http.Handler { return http.NewServeMux() })
fmt.Println(c != nil)
}
Output: true
func ComponentWithRunner ¶ added in v0.1.18
func ComponentWithRunner(handler func() http.Handler, factory func() httpserver.IRunner) bootstrap.IComponent
ComponentWithRunner wraps the HTTP server as a bootstrap.IComponent using a custom runner factory. Use this when the caller needs to control how the IRunner is created — for example, to inject a Lambda runner.
Prefer Component for plain HTTP/HTTPS deployments.
Example ¶
ExampleComponentWithRunner shows how to supply a custom runner factory. Use this when the deployment target determines the runner type at runtime — for example, when Lambda support is required (see httpserver/componentwithlambda for the ready-made Lambda-aware component).
httpComp.ComponentWithRunner(
func() http.Handler { return router },
func() httpserver.IRunner {
if isLambda {
return lambda.NewHttpServer()
}
return httpserver.NewHttpServer(httpserver.Config{Port: port})
},
)
package main
import (
"fmt"
"net/http"
"github.com/phcp-tech/common-library-golang/httpserver"
httpComp "github.com/phcp-tech/common-library-golang/httpserver/component"
)
func main() {
c := httpComp.ComponentWithRunner(
func() http.Handler { return http.NewServeMux() },
func() httpserver.IRunner {
return httpserver.NewHttpServer(httpserver.Config{Port: "8080"})
},
)
fmt.Println(c != nil)
}
Output: true
Types ¶
This section is empty.