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.

Wygeneruj klienta i serwerZainstaluj API Genie

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.

Inne zastosowania