openapi-typescript vs swagger-typescript-api
APIクライアント生成ライブラリ
openapi-typescriptswagger-typescript-api

APIクライアント生成ライブラリ

APIクライアント生成ライブラリは、OpenAPI仕様やSwagger仕様に基づいて、TypeScriptで型安全なAPIクライアントを自動生成するためのツールです。これにより、手動でAPI呼び出しを実装する手間を省き、開発者がAPIとやり取りする際のエラーを減少させることができます。これらのライブラリは、APIの変更に迅速に対応できる柔軟性を提供します。

npmのダウンロードトレンド

3 年

GitHub Starsランキング

統計詳細

パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
openapi-typescript2,142,6687,987878 kB2261ヶ月前MIT
swagger-typescript-api04,0701.2 MB1981日前MIT

機能比較: openapi-typescript vs swagger-typescript-api

型安全性

  • openapi-typescript:

    openapi-typescriptは、OpenAPI仕様に基づいて、APIの型を厳密に生成します。これにより、APIのレスポンスやリクエストの型を明示的に定義でき、開発中に型エラーを早期に発見できます。

  • swagger-typescript-api:

    swagger-typescript-apiも型安全性を提供しますが、Swagger仕様に依存しているため、OpenAPI仕様に比べて型の厳密さが若干劣る場合があります。それでも、基本的な型チェックは行われます。

サポートされる仕様

  • openapi-typescript:

    openapi-typescriptは、OpenAPI 3.x仕様に特化しており、最新のAPI仕様に対応しています。これにより、最新の機能や改善点を活用することができます。

  • swagger-typescript-api:

    swagger-typescript-apiは、Swagger 2.0とOpenAPI 3.xの両方をサポートしており、既存のSwagger仕様を持つプロジェクトとの互換性があります。

生成されるコードのカスタマイズ

  • openapi-typescript:

    openapi-typescriptは、生成されるコードのカスタマイズが可能で、開発者が特定のニーズに合わせてコードを調整できます。これにより、プロジェクトの特性に応じた最適な実装が可能です。

  • swagger-typescript-api:

    swagger-typescript-apiもカスタマイズ機能を提供しますが、openapi-typescriptに比べると柔軟性が若干劣る場合があります。

使いやすさ

  • openapi-typescript:

    openapi-typescriptは、シンプルで直感的なAPIを提供しており、TypeScriptの開発者にとって使いやすいです。ドキュメントも充実しており、導入がスムーズです。

  • swagger-typescript-api:

    swagger-typescript-apiも使いやすいですが、Swagger仕様に特有の設定が必要な場合があり、初心者には少しハードルが高いかもしれません。

コミュニティとサポート

  • openapi-typescript:

    openapi-typescriptは、活発なコミュニティがあり、定期的にアップデートが行われています。問題が発生した場合のサポートも充実しています。

  • swagger-typescript-api:

    swagger-typescript-apiもコミュニティが存在しますが、openapi-typescriptに比べると規模が小さいため、サポートが若干限られることがあります。

選び方: openapi-typescript vs swagger-typescript-api

  • openapi-typescript:

    openapi-typescriptは、OpenAPI 3.x仕様に特化しており、型安全性を重視したクライアントを生成します。OpenAPI仕様を使用している場合や、より厳密な型チェックが必要な場合に適しています。

  • swagger-typescript-api:

    swagger-typescript-apiは、Swagger 2.0およびOpenAPI 3.x仕様をサポートしており、APIのエンドポイントに対するリクエストメソッドを簡単に生成できます。Swagger仕様を使用している場合や、迅速にクライアントを生成したい場合に適しています。

openapi-typescript のREADME

openapi-typescript

openapi-typescript turns OpenAPI 3.0 & 3.1 schemas into TypeScript quickly using Node.js. No Java/node-gyp/running OpenAPI servers necessary.

The code is MIT-licensed and free for use.

Tip: New to OpenAPI? Speakeasy’s Intro to OpenAPI is an accessible guide to newcomers that explains the “why” and “how” of OpenAPI.

Features

  • ✅ Supports OpenAPI 3.0 and 3.1 (including advanced features like discriminators)
  • ✅ Generate runtime-free types that outperform old school codegen
  • ✅ Load schemas from YAML or JSON, locally or remotely
  • ✅ Generate types for even huge schemas within milliseconds

Note: OpenAPI 2.x is supported with versions 5.x and previous

Examples

👀 See examples

Setup

This library requires the latest version of Node.js installed (20.x or higher recommended). With that present, run the following in your project:

npm i -D openapi-typescript typescript

And in your tsconfig.json, to load the types properly:

{
  "compilerOptions": {
+    "module": "ESNext", // or "NodeNext"
+    "moduleResolution": "Bundler" // or "NodeNext"
  }
}

Highly recommended

Also adding the following can boost type safety:

{
  "compilerOptions": {
+    "noUncheckedIndexedAccess": true
  }
}

Basic usage

First, generate a local type file by running npx openapi-typescript, first specifying your input schema (JSON or YAML), and where you’d like the --output (-o) to be saved:

# Local schema
npx openapi-typescript ./path/to/my/schema.yaml -o ./path/to/my/schema.d.ts
# 🚀 ./path/to/my/schema.yaml -> ./path/to/my/schema.d.ts [7ms]

# Remote schema
npx openapi-typescript https://myapi.dev/api/v1/openapi.yaml -o ./path/to/my/schema.d.ts
# 🚀 https://myapi.dev/api/v1/openapi.yaml -> ./path/to/my/schema.d.ts [250ms]

Then in your TypeScript project, import types where needed:

import type { paths, components } from "./my-openapi-3-schema"; // generated by openapi-typescript

// Schema Obj
type MyType = components["schemas"]["MyType"];

// Path params
type EndpointParams = paths["/my/endpoint"]["parameters"];

// Response obj
type SuccessResponse =
  paths["/my/endpoint"]["get"]["responses"][200]["content"]["application/json"]["schema"];
type ErrorResponse =
  paths["/my/endpoint"]["get"]["responses"][500]["content"]["application/json"]["schema"];

From here, you can use these types for any of the following (but not limited to):

  • Using an OpenAPI-supported fetch client (like openapi-fetch)
  • Asserting types for other API requestBodies and responses
  • Building core business logic based on API types
  • Validating mock test data is up-to-date with the current schema
  • Packaging API types into any npm packages you publish (such as client SDKs, etc.)

📓 Docs

View Docs