openapi_generator
npm의 openapi-generator-cli 구현을 참고하여 만든 OpenAPI 클라이언트 SDK용 생성기입니다.
Dart/Flutter용 OpenAPI 생성기
npm의 openapi-generator-cli 구현을 참고하여 만든 OpenAPI 클라이언트 SDK용 생성기입니다.
openapi_generator용 어노테이션 패키지 https://pub.dev/packages/openapi_generator.
Node 구현을 참고한 openapi-generator용 Dart 래퍼입니다.
—아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
pub package Pub Likes Pub Points Pub Popularity GitHub Repo stars codecov
Like this library? Give us a star or a like!
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 -versionIf you do not have Java installed, download it from Adoptium or Oracle.
skipIfSpecIsUnchanged is DeprecatedskipIfSpecIsUnchanged option is now deprecated and will be removed in the next major release.lib/ folder, this works out of the box.lib/, you must update or add a build.yaml to include your spec file as a source.targets:
$default:
sources:
- $package$
- lib/**
- openapi.yaml # or your spec file path
forceAlwaysRun (defaults to false) option to ensure the generator always runs.
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.
| 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 |
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 thebetabranch: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
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 {}
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.
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 {}
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 {}
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:
.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