Generuj kod
Generuj z kontraktu, zachowaj swoje handlery
Klient i serwer napisane ręcznie powtarzają to, co kontrakt już mówi, i rozjeżdżają się z nim. Generuj oba z kontraktu, w bibliotekach, których Twój język już używa, i zachowaj swoje handlery przy ponownym generowaniu.
- Generuj ponownie bez nadpisywania handlerówTwoje handlery mieszkają w Twoim własnym pliku, poza wygenerowanym pakietem. Wygeneruj ponownie, gdy kontrakt się zmieni: pakiet zostaje przepisany, Twój plik nie, a kompilator wskazuje handlery, których zmiana dotyczy.
- Bez zależności od środowiska uruchomieniowego API GenieFunkcje pomocnicze, których potrzebuje klient, są generowane do niego, a serwery używają Spring, ASP.NET Core, FastAPI, Express,
net/httpi Phoenix tak, jak robią to ich społeczności. Żadnego pakietu API Genie w Twoim pliku lock. - Sprawdzone, zanim do Ciebie trafiZestaw testów zgodności porównuje wygenerowany kod ze snapshotami, sprawdza typy i lintuje go narzędziami docelowego języka oraz uruchamia klientów i serwery względem kontraktu. Dokumentacja wymienia jego zakres i ograniczenia.
Zmiana kontraktu, wygenerowana ponownie
Generator pisze pakiet npm; Twoje handlery są w app.ts, poza nim. Dodaj do kontraktu wymagane pole i wygeneruj ponownie: zmieniają się tylko kontrakt i pakiet, a kompilator wskazuje handler, który musi nadążyć.
$ apigenie-generator server express openapi.yaml \
-o server --package-name shipping-server
$ ls
app.ts db.ts node_modules openapi.yaml package-lock.json package.json server tsconfig.json
$ # Shipment gains a required field, carrier; regenerate
$ apigenie-generator server express openapi.yaml \
-o server --package-name shipping-server
$ git diff --stat
openapi.yaml | 4 +++-
server/src/types.ts | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
$ npx tsc --noEmit
app.ts(6,3): error TS2741: Property 'carrier' is missing in type '{ id: string; status: string; }' but required in type 'Shipment'.Co obejmuje
- Klienci HTTPTypeScript, Java, Go, Python, C# i Elixir.
- Serwery HTTPSpring, ASP.NET Core, Express, FastAPI, Go, Phoenix, oRPC oraz serwery MCP (eksperymentalne).
- Kod sterowany zdarzeniamiKlienci i aplikacje Kafka, WebSocket, RabbitMQ i MQTT z AsyncAPI.
- GraphQL i gRPCTylko Elixir: serwery Absinthe oraz klienci i serwery elixir-grpc.
- Schematy i daneSchematy Zod z JSON Schema (eksperymentalne) i przykładowe dane dla schematu.
- NakładkiUstawienia generatora w nakładce (overlay), poza opisem API.
Narzędzie, które to robi
Krok po kroku (przewodnik po angielsku)
Generate a client and a server: Generate a typed client and a server from one OpenAPI document, in TypeScript, Java, Go, Python, C# or Elixir, keep your code out of the generated files, and regenerate in CI.
Twoje handlery zostają w Twoich plikach
Generator pisze swój pakiet i nic poza nim. Generuj do repozytorium i pozwól CI sprawdzać, czy wygenerowany kod wciąż zgadza się z kontraktem.