パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v7.0.0

openapi_generator

npm の openapi-generator-cli の実装を参考にした、OpenAPI クライアント SDK を生成するジェネレーター。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
1.5万
いいね数
126
Pub ポイント
130

パッケージをインストール

flutter pub add openapi_generator

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

OpenAPI仕様からクライアントSDKを生成するFlutter/Dartパッケージで、npmのopenapi-generator-cliにインスパイアされています。APIとのやり取り用の型安全なDartコードの作成を自動化し、手作業の負担と潜在的なエラーを削減します。生成されたコードはAndroid、iOS、Web、macOS、Windows、Linuxなど複数のプラットフォームをサポートしており、環境間で一貫したAPIクライアントの使用が可能になります。OpenAPI/Swagger定義に依存してアプリケーション内の堅牢かつ最新のAPI統合を維持したいチームに最適です。

用途

  • OpenAPI仕様からAPIクライアントの生成を自動化する
  • 型安全性を活用したREST APIの統合
  • Flutter アプリ向けクロスプラットフォーム API クライアント
  • バックエンドの変更とAPI契約を同期する
  • API サービスレイヤーにおけるボイラープレートの削減

主な機能

  • OpenAPI 3.x 決定から Dart コードを生成します
  • マルチプラットフォーム出力をサポートしています
  • 型安全なAPIモデルとサービスを生成します
  • Flutter pub add を通じた統合
  • CLI風のワークフローを使用

適している対象

  • OpenAPIで定義されたAPIを使用するFlutter開発者
  • 自動化されたAPIクライアントの更新が必要なチーム
  • 複数プラットフォームで一貫したAPI統合を必要とするプロジェクト
  • 手動のAPIサービスコード作成を減らしたい開発者

注意事項

  • 有効なOpenAPI仕様ファイルが必要です
  • 生成されたコードは、複雑なエンドポイント用にカスタマイズが必要になる場合があります
  • 一貫性を保つためにCI/CDパイプラインで最適に使用されます
  • ランタイムライブラリではありません。ソースコードのみを生成します。

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

openapi-generator-dart

pub package Pub Likes Pub Points Pub Popularity GitHub Repo stars codecov

Like this library? Give us a star or a like!


⚠️ Java Requirement

Java is required to use this library.
The OpenAPI Generator CLI is a Java application.
Please ensure you have Java (version 8 or higher) installed and available in your system PATH.
You can check your Java installation with:

java -version

If you do not have Java installed, download it from Adoptium or Oracle.


⚠️ Deprecation & Breaking Change Notice

skipIfSpecIsUnchanged is Deprecated
  • The skipIfSpecIsUnchanged option is now deprecated and will be removed in the next major release.
  • Local OpenAPI specs are now automatically watched for changes.
    • If your spec file is in the lib/ folder, this works out of the box.
    • If your spec file is outside lib/, you must update or add a build.yaml to include your spec file as a source.
      Example:
      targets:
        $default:
          sources:
            - $package$
            - lib/**
            - openapi.yaml # or your spec file path
      
  • Remote specs:
    Use the forceAlwaysRun (defaults to false) option to ensure the generator always runs.
    • This option is ignored for local specs.
    • When enabled, it modifies the annotated file to force regeneration. This might cause issues such as merge conflicts

Overview

This repository provides Dart/Flutter libraries for generating OpenAPI client SDKs directly from your OpenAPI specification. Inspired by Openapi Generator Cli (npm), it enables seamless integration into Dart and Flutter projects.

Libraries
Library Description Latest Version
openapi-generator Dev dependency for generating OpenAPI client SDK via Dart source gen (usage) pub package
openapi-generator-annotations Annotations for configuring OpenAPI client SDK generation (usage) pub package
openapi-generator-cli CLI wrapper for OpenAPI code generation (usage) pub package

Quick Start

1. Add Dependencies

Add the annotations package to your pubspec.yaml:

dependencies:
  openapi_generator_annotations: ^<latest-version>

Add the generator as a dev dependency:

dev_dependencies:
  openapi_generator: ^<latest-version>

Beta Features:
For beta features, use the beta branch:

dependencies:
  openapi_generator_annotations:
    git:
      url: https://github.com/gibahjoe/openapi-generator-dart.git
      ref: beta
      path: openapi-generator-annotations

dev_dependencies:
  openapi_generator:
    git:
      url: https://github.com/gibahjoe/openapi-generator-dart.git
      ref: beta
      path: openapi-generator
2. Annotate Your Dart Class

Annotate a Dart class with @Openapi() to configure code generation:

import 'package:openapi_generator_annotations/openapi_generator_annotations.dart';

@Openapi(
  additionalProperties: DioProperties(pubName: 'petstore_api', pubAuthor: 'Johnny Depp'),
  inputSpec: RemoteSpec(path: 'https://petstore3.swagger.io/api/v3/openapi.json'),
  typeMappings: {'Pet': 'ExamplePet'},
  generatorName: Generator.dio,
  runSourceGenOnOutput: true,
  outputDirectory: 'api/petstore_api',
)
class Example {}
3. Generate the SDK

Run the build command:

dart run build_runner build --delete-conflicting-outputs
# or, for Flutter projects:
flutter pub run build_runner build --delete-conflicting-outputs

The generated SDK will appear in the specified output directory.


Next Generation Features (v5.0+)

  • Spec Caching: Automatically caches your OpenAPI spec for faster incremental builds.
  • Remote Spec Support: Pulls and caches remote specs; always fetches the latest version unless using a local copy.
  • Smart Generation: Skips code generation if there are no changes in the spec or based on flags.
  • All previous features remain available.

Example:

@Openapi(
  additionalProperties: DioProperties(pubName: 'petstore_api', pubAuthor: 'Johnny Depp'),
  inputSpec: RemoteSpec(path: 'https://petstore3.swagger.io/api/v3/openapi.json'),
  typeMappings: {'Pet': 'ExamplePet'},
  generatorName: Generator.dio,
  runSourceGenOnOutput: true,
  outputDirectory: 'api/petstore_api',
)
class Example {}

Advanced Configuration

If you are having issues with the generated code, this is not an problem with this package and creating an issue here will not help solve it. Its best to create the issue in the base OpenApi library since this package is a wrapper around that library for ease of use with Flutter/dart.

Below are some advanced configurations you may try.

  • Custom Templates:
    Use the templateDirectory parameter to specify a custom code generation template.

  • Type & Import Mappings:
    Use typeMappings and importMappings to control how OpenAPI types and models are mapped in Dart.

  • Reserved Words:
    Use reservedWordsMappings to avoid conflicts with Dart reserved words.

Example:

@Openapi(
  additionalProperties: DioProperties(pubName: 'custom_api', pubAuthor: 'Jane Doe'),
  inputSpec: InputSpec(path: 'openapi-spec.yaml'),
  generatorName: Generator.dio,
  templateDirectory: 'templates/dart',
  typeMappings: {'date': 'DateTime'},
  importMappings: {'DateTime': 'package:my_project/date_time.dart'},
  reservedWordsMappings: {'class': 'clazz'},
  outputDirectory: 'api/custom_api',
)
class CustomApi {}

Troubleshooting

Common Issues
  • Dependency Conflicts:
    Use dependency_overrides in the generated package's pubspec.yaml and add pubspec.yaml to .openapi-generator-ignore to prevent overwrites.

  • Incorrect Generated Code:

    • Fix your OpenAPI spec (preferred).
    • Manually edit the generated code and add the files to .openapi-generator-ignore to prevent them from being overwritten.

.openapi-generator-ignore Example:

# Ignore all test files
test/*
# Ignore pubspec.yaml to preserve manual changes
pubspec.yaml

カテゴリー

依存関係

依存関係一覧 11 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。