Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

OpenAPI Generator Flutter Example

OpenAPI Generator Flutterのサンプルプロジェクトです。

概要

このプロジェクトは、OpenAPI Generator Flutterの使用例を示すサンプルプロジェクトです。

バージョン

このサンプルは OpenAPI Generator Flutter 0.3.4 を使用しています。

セットアップ

  1. 依存関係をインストールします:
flutter pub get
  1. OpenAPI仕様ファイルをopen_api_filesディレクトリに配置します。

  2. コードを生成します:

flutter pub run build_runner build --delete-conflicting-outputs

使用方法

  1. 生成されたコードはlib/generatedディレクトリに出力されます。

  2. 生成されたコードを使用してAPIクライアントを作成します:

import 'package:dio/dio.dart';
import 'package:openapi_generator_example/generated/retrofit/auth/auth_client.dart';
import 'package:openapi_generator_example/generated/models/auth/request_token.dart';

void main() async {
  final dio = Dio();
  final client = AuthClient(dio, baseUrl: 'https://api.example.com');

  try {
    final response = await client.postToken(
      body: RequestToken(aPIPassword: 'your-api-password'),
    );
    print(response.data);
  } catch (e) {
    print('Error: $e');
  }
}

生成されるファイル構造

lib/generated/
  ├── models/           # モデルクラス
  │   ├── auth/        # 認証関連のモデル
  │   ├── order/       # 注文関連のモデル
  │   └── ...
  ├── retrofit/        # Retrofitクライアント
  │   ├── auth/        # 認証関連のクライアント
  │   ├── order/       # 注文関連のクライアント
  │   └── ...
  ├── models_index.dart
  └── retrofit_index.dart

プロジェクト構造

example/
├── lib/
│   ├── main.dart           # メインのサンプルコード
│   └── generated/          # 生成されたコード
│       ├── models/         # モデルクラス
│       └── retrofit/       # Retrofitクライアント
├── open_api_files/         # OpenAPI仕様ファイル
├── pubspec.yaml           # 依存関係の設定
└── build.yaml            # ビルド設定

生成されるコードの例

モデルクラス

@freezed
class Order with _$Order {
  const factory Order({
    required String id,
    required String status,
    @JsonKey(name: 'created_at') required DateTime createdAt,
  }) = _Order;

  factory Order.fromJson(Map<String, dynamic> json) => _$OrderFromJson(json);
}

Retrofitクライアント

@RestApi()
abstract class OrderClient {
  factory OrderClient(Dio dio, {String baseUrl}) = _OrderClient;

  @GET('/orders')
  Future<List<Order>> getOrders({
    @Query('status') String? status,
  });

  @POST('/orders')
  Future<Order> createOrder(@Body() Order order);
}