mirror of
https://github.com/zap-proto/zip.git
synced 2026-10-19 15:38:57 +00:00
zip is shared protocol infra (the fiber-over-ZAP web framework used by every
Lux/Hanzo/Zoo Go binary — nodes, gateway, cloud, iam, kms, o11y, ai, …), so its
home is the ZAP protocol family (zap-proto/{go,http,zapd,zip}), NOT any one org's
brand namespace. This consolidates the rich framework (formerly hanzoai/zip v0.5.0
— Ctx/Handler/Errorf/Err*/HTTPError, typed handlers, middleware, runtime/extension
loading, openapi, validate, zaprpc) with the real ZAP transport (ListenZAP/
ListenHTTP/Serve over zap-proto/http) into ONE canonical module.
Module path github.com/hanzoai/zip -> github.com/zap-proto/zip. Code identical to
hanzoai/zip v0.5.0; promoted to v1.0.0 as the stable shared-infra framework. The
prior hanzoai/zip lineage is retired — one home, one import path, one way.
Verified: go build/vet/test ./... green; the ZAP round-trip integration test serves
/v1/health over the real ZAP transport (200 + handler JSON).
43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
// migrate-from-chi example — chi → zip via stdlib adapter.
|
|
//
|
|
// Use zip.AdaptNetHTTP(chiRouter) to mount an existing chi.Router as a
|
|
// migration step. Replace adapted routes with native zip handlers when
|
|
// feasible; the adapter costs ~5% perf vs native Fiber dispatch.
|
|
//
|
|
// chi is NOT a dep of this example — we adapt any http.Handler, and a
|
|
// chi.Router satisfies that interface natively.
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/zap-proto/zip"
|
|
"github.com/zap-proto/zip/middleware"
|
|
)
|
|
|
|
// legacyHandler stands in for an existing chi.Router. Same shape
|
|
// (http.Handler) so zip.AdaptNetHTTP works without changes.
|
|
type legacyHandler struct{}
|
|
|
|
func (legacyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
_, _ = w.Write([]byte(`{"legacy":true}`))
|
|
}
|
|
|
|
func main() {
|
|
app := zip.New(zip.Config{AppName: "migrate-from-chi"})
|
|
app.Use(middleware.Recover())
|
|
|
|
// Native zip routes for new work.
|
|
app.Get("/v1/users/:id", func(c *zip.Ctx) error {
|
|
return c.JSON(200, map[string]string{"id": c.Param("id")})
|
|
})
|
|
|
|
// Mount the legacy chi router under /legacy/chi for incremental
|
|
// migration. Replace one path at a time with native zip handlers.
|
|
app.Mount("/legacy/chi", legacyHandler{})
|
|
|
|
log.Fatal(app.ListenHTTP(":8080"))
|
|
}
|