Az első modulod
Ez az oldal a shop mintaalkalmazás első lépését játssza el: egy üres projektből eljutunk egy bootoló, kérést kiszolgáló modulig.
Modul generálása
go tool gpsystem new module shop
Ez létrehozza:
- a belépési pontot (
cmd/shop/main.go): egyserver.Run-hívást, ami egyRegisterFunc-hoz kötve; - a modul-bekötést (
internal/modules/shop/register.go): egyDependenciesstruct + egy exportáltRegisterApi(router, deps)függvény; - egy
apisurface-t asurfaces/api/alatt: a generált szigorú interfészre kötött handler, egy minimálisservice/varrat,policy/registry-stub, plusz egy üresen tartotthttp/mapper/mappa a saját kódodnak; - a modul-szintű közös vázakat:
core/(a surface-ek által megosztott szabályok és sentinel-hibák helye) ésrepository/(a modul egyetlen perzisztencia-rétege); - a TypeSpec kontraktust (
spec/typespec/modules/shop/) és a codegen konfigot (api/oapi-codegen/shop-api.yaml); - majd anchor-beszúrásokkal mindent regisztrál (
main.tsp,cmd/shop/main.go).
A codegen lánc futtatása
mise run generate
Ez TypeSpecből OpenAPI-t fordít (api/openapi/), lefuttatja az oapi-codegent a projekt template-készletével (upstream chi-server + a kit strict-felülírásai), az eredményt az internal/modules/shop/surfaces/api/http/gen/ alá teszi, tidy-zik és buildel. A minta-handler a generált szigorú interfészt implementálja, így a projekt azonnal fordul: a spec és a kód széttartása fordítási hiba.
Bootolás
go run ./cmd/shop
Próbáld ki
curl localhost:3000/api/v1/shop/
[]
A váz-handler üres listát ad vissza; cseréld le a törzsét, amint felépítetted a modul core/ és repository/ rétegét, és a surface service/ varrata onnan szolgál ki.
A hibák alapból RFC 9457 problem dokumentumok (Hibaválaszok):
curl localhost:3000/api/v1/nope
{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "Not Found",
"instance": "/api/v1/nope"
}
Nyomj Ctrl+C-t: a szerver kivárja az in-flight kéréseket, lezárja a poolt, flusholja a telemetriát és tisztán kilép. Ez az app életciklus munkája, amin a server.Run ül.
Fejlesztés közben érdemes bekapcsolni a Monolog-stílusú konzol-logot (LOG_FORMAT=monolog): a hibaláncokat a PHP-ból ismerős, olvasható formában látod.
Merre tovább
Innen a shop mintaalkalmazás útját követheted:
- Újabb surface (pl.
admin): add surface - Endpointok hozzáadása: add handler
- Esemény, listener és ütemezett job: worker generátorok
- Mit csinál pontosan a chassis: Architektúra