Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InitGin ¶
InitGin creates and configures a new Gin engine. It always runs in ReleaseMode to suppress framework debug output in all environments. It attaches structured slog-based request logging and a recovery middleware, and optionally configures CORS when corsOrigins is non-empty. Entries containing * are treated as wildcard patterns and matched via AllowOriginFunc (single-level wildcard * means one label, no dots). The caller is responsible for passing the correct origin list. Pass nil or an empty slice to disable CORS.
filters is optional (trailing variadic, so existing callers passing only corsOrigins are unaffected) and is passed straight through to slogGin's own request-logging middleware - see github.com/samber/slog-gin's Filter type and its filters.go helpers (IgnorePath/IgnorePathPrefix/IgnoreStatus/etc.). A filter returning false for a given request skips logging it entirely - e.g. slogGin.IgnorePath("/") to silence a noisy health-check endpoint.
Example ¶
ExampleInitGin shows how to create a Gin engine with no CORS. Pass nil or an empty slice when all cross-origin requests should be blocked.
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
libgin "github.com/phcp-tech/common-library-golang/gin"
)
func main() {
router := libgin.InitGin(nil)
router.GET("/health", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": "ok"})
})
fmt.Println(router != nil)
}
Output: true
Example (Cors) ¶
ExampleInitGin_cors shows how to enable CORS for a list of allowed origins. Exact origins and wildcard patterns (entries containing *) can be mixed. A wildcard * matches exactly one subdomain label (no dots).
package main
import (
"fmt"
"net/http"
"net/http/httptest"
"github.com/gin-gonic/gin"
libgin "github.com/phcp-tech/common-library-golang/gin"
)
func main() {
router := libgin.InitGin([]string{
"https://app.example.com", // exact origin
"https://*.example.com", // wildcard: root + any single subdomain
})
router.GET("/api/data", func(c *gin.Context) {
c.Status(http.StatusOK)
})
// Allowed origin receives its own origin in the response header.
w := httptest.NewRecorder()
req := httptest.NewRequest(http.MethodGet, "/api/data", nil)
req.Header.Set("Origin", "https://app.example.com")
router.ServeHTTP(w, req)
fmt.Println(w.Header().Get("Access-Control-Allow-Origin"))
// Blocked origin receives no CORS header.
w2 := httptest.NewRecorder()
req2 := httptest.NewRequest(http.MethodGet, "/api/data", nil)
req2.Header.Set("Origin", "https://test.com")
router.ServeHTTP(w2, req2)
fmt.Println(w2.Header().Get("Access-Control-Allow-Origin"))
}
Output: https://app.example.com
Types ¶
This section is empty.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package component provides Gin lifecycle integration for bootstrap.
|
Package component provides Gin lifecycle integration for bootstrap. |
|
Package pprof exposes Go runtime profiling endpoints on a Gin engine via github.com/gin-contrib/pprof.
|
Package pprof exposes Go runtime profiling endpoints on a Gin engine via github.com/gin-contrib/pprof. |