Code Explainers
Gin code explainers
go
package theme import ( "fmt"
Per-tenant HTML templates with Gin's renderer
multi-tenancy
concurrency
html-templates
Advanced
8 steps
go
package middleware import ( "net/http"
A maintenance-mode gate in Gin
middleware
atomic-flag
concurrency
Intermediate
8 steps
go
func ServeVideo(c *gin.Context) { id := c.Param("id") video, err := videoRepo.FindByID(c.Request.Context(), id) if err != nil {
Streaming video files with Gin
http streaming
range requests
file serving
Intermediate
6 steps
go
package handler type LineItem struct { SKU string `json:"sku" binding:"required,alphanum"`
Structured validation errors in Gin
validation
json-binding
error-handling
Intermediate
8 steps
go
package handlers import ( "net/http"
Query-string filtering in Gin with GORM
query-binding
validation
conditional-queries
Intermediate
8 steps
go
func ProxyDownload(c *gin.Context) { objectKey := c.Param("key") upstream := fmt.Sprintf("%s/files/%s", storageBaseURL, objectKey)
Streaming a proxied download in Gin
reverse-proxy
streaming
http-headers
Intermediate
8 steps
go
package handlers import ( "net/http"
Header-driven API versioning in Gin
api-versioning
header-binding
closures
Intermediate
6 steps
go
func ListArticles(db *gorm.DB) gin.HandlerFunc { return func(c *gin.Context) { page, err := strconv.Atoi(c.DefaultQuery("page", "1")) if err != nil || page < 1 {
Building a paginated list endpoint in Gin
pagination
query-parameters
input-validation
Intermediate
8 steps
go
package middleware import ( "bytes"
Building a response cache middleware in Gin
middleware
caching
concurrency
Intermediate
8 steps
go
package handlers import ( "net/http"
Validating query params with Gin binding tags
validation
struct-tags
pagination
Intermediate
8 steps
go
package server import ( "net/http"
Serving cached static assets in Gin
caching
static-files
middleware
Intermediate
7 steps
go
package middleware import ( "net/http"
Per-IP rate limiting middleware in Gin
rate-limiting
token-bucket
concurrency
Intermediate
7 steps
go
package middleware import ( "net/http"
Building a CORS middleware in Gin
cors
middleware
closures
Intermediate
9 steps
go
package middleware import ( "context"
How a request-timeout middleware works in Gin
middleware
context
goroutines
Advanced
6 steps
go
package main import ( "context"
Graceful shutdown for a Gin server in Go
graceful-shutdown
signals
goroutines
Intermediate
6 steps
go
package middleware import ( "bytes"
Capturing response bodies in Gin middleware
middleware
response-capture
struct-embedding
Intermediate
7 steps
go
func GetArticle(c *gin.Context) { id := c.Param("id") article, err := articleRepo.FindByID(c.Request.Context(), id)
Conditional GET with ETags in Gin
http-caching
etag
conditional-requests
Intermediate
7 steps
go
package middleware import ( "net/http"
How a www-to-apex redirect middleware works in Gin
middleware
http-redirect
closures
Intermediate
5 steps