Generator

Klienci, serwery i dokumentacja z kontraktu

apigenie-generator zamienia opisy API w klientów i serwery w sześciu językach oraz w witryny z dokumentacją, z bibliotekami, których każdy język już używa.

Wygeneruj klienta i serwerZobacz każdy generator

Jeden kontrakt na wejściu, Twój kod poza pakietem

Cztery rodzaje wyjścia z tego samego pliku. Handlery wygenerowanego serwera mieszkają w Twoich plikach, a ponowne generowanie ich nie rusza.

Z jednego opisu API apigenie-generator pisze klientów, serwery, witrynę z dokumentacją i dane testowe; handlery serwera to Twoje pliki, zachowane przy ponownym generowaniuCo powstaje i co zostaje Twojeopenapi.yamlalbo AsyncAPI, GraphQL, Protobufapigenie-generatorKlienciTypeScript, Java, Go, Python, C# i ElixirSerweryrouter, typy, interfejsy handlerówTwoje handleryTwoje pliki; regeneracja je omijaWitryna z dokumentacjąszukanie, Try it out, tłumaczenia, changelogDane testowezgodne wartości, jako JSON lub YAML
Klienci i serwery w sześciu językach z OpenAPI i AsyncAPI; kod GraphQL i gRPC w Elixirze.

Jak wygląda wygenerowany klient

Klient Fetch ma typowaną funkcję na każdą operację. Typy trafiają do types.ts, funkcje pomocnicze żądań do runtime.ts. Oba są generowane do Twojego pakietu.

$ apigenie-generator client fetch orders.yaml -o client
$ ls client/src
index.ts  metadata.ts  operations.ts  runtime.ts  types.ts
$ # client/src/operations.ts, one function per operation:
/** Get an order */
export async function getOrder(params: GetOrderParams, options?: RequestOptions): Promise<Order> {
  const result = await request(
    {
      method: "GET",
      path: "/orders/{orderId}",
      pathParams: { orderId: params.orderId },
      security: [["ApiKey"]],
      responseFormat: "json",
    },
    options,
  );
  return result as Order;
}

Znajdź cel dla swojego kontraktu

Obsługa języków zależy od standardu wejściowego i wyjścia, którego potrzebujesz. Dla kodu ze Swagger 2.0 najpierw skonwertuj do OpenAPI (eksperymentalne). Dokumentacja generatora wymienia opcje i ograniczenia każdego celu.

WejścieWygenerowane wyjścieJęzyki
OpenAPI od 3.0 do 3.2Klienci i serwery APITypeScript, Java, Go, Python, C# i Elixir
AsyncAPI 3.xKlienci i aplikacje do przesyłania wiadomościTypeScript, Java, Go, Python, C# i Elixir
GraphQLSerwery AbsintheElixir
ProtobufKlienci i serwery gRPCElixir
JSON SchemaSchematy walidacji Zod (eksperymentalne)TypeScript

Frameworki, których może użyć Twój kod

  • TypeScriptKlienci Fetch, serwery Express, oRPC i MCP (eksperymentalne), klienci i aplikacje KafkaJS i WebSocket, schematy Zod.
  • JavaKlienci dla Spring RestClient, RestTemplate, OpenFeign lub interfejsów HTTP; serwery Spring Boot; klienci i aplikacje Kafka.
  • GoKlienci i serwery net/http, pakiety klienckie i aplikacje Kafka.
  • PythonKlienci httpx i Pydantic, serwery FastAPI, klienci aiokafka i aplikacje FastStream dla Kafka, RabbitMQ i MQTT.
  • C#Klienci HttpClient dla .NET 8, serwery ASP.NET Core Minimal API, klienci i aplikacje Kafka.
  • ElixirKlienci Req, serwery i kanały Phoenix, serwery GraphQL Absinthe oraz klienci i serwery gRPC na elixir-grpc.

Nie tylko kod

  • Witryny z dokumentacjąStatyczna witryna z plików OpenAPI, Swagger 2.0, AsyncAPI, GraphQL i Protobuf, z wyszukiwaniem, Try it out, tłumaczeniami i changelogami z Gita.
  • Dane testoweWartości zgodne z dowolnym schematem dokumentu OpenAPI, jedna lub wiele, jako JSON lub YAML.
  • Schematy walidacjiSchematy Zod z JSON Schema (eksperymentalne).
  • NakładkiCele kodu OpenAPI i AsyncAPI oraz data przyjmują --overlay, więc ustawienia generatora zostają poza opisem API. Cele dokumentacji, GraphQL i Protobuf nie.

Instalacja

Pakiety CLI zawierają apigenie-generator. Zainstaluj przez Homebrew lub npm albo pobierz natywny pakiet lub archiwum. W Dockerze użyj docker run --entrypoint apigenie-generator mykulyak/apigenie.

Zastosowania

Wygeneruj klienta i serwerZobacz każdy generator