Flutter OpenAPI模型生成插件openapi_model_gen的使用

openapi_model_gen #

从OpenAPI规范生成无包依赖的Dart模型。你可以自己编写访问API的代码,但可以从映射良好的模型类中受益。

默认情况下,生成的模型支持equatablejson_serializablecopy_with_extension包。

安装 #

由于模型通过其他包提供了额外的功能,因此你也需要安装这些包:

dart pub add equatable json_annotation copy_with_extension
dart pub add --dev build_runner copy_with_extension_gen json_serializable

使用 #

要从给定的OpenAPI规范文件生成模型类,请使用以下命令:

dart run openapi_model_gen -i ./openapi_spec.yaml -o ./lib/generated_models/
dart run build_runner build

这将为规范文件中找到的所有模式生成类。

模式映射 #

如果你想要引用未生成的类,可以将类名映射到导入路径。在这种情况下,导入将在适当的地方自动添加。

dart run openapi_model_gen <...> --schema-mappings ExternalClass=package:external_package/external_class.dart

外部包 #

如果你不希望或不需要某些外部包的支持,你可以显式启用或禁用它们。默认情况下每个包都是启用的。

# 启用所有(仅用于可读性,因为标志默认是启用的)
dart run openapi_model_gen --copy-with --json-serializable --equatable <...>
# 禁用所有
dart run openapi_model_gen --no-copy-with --no-json-serializable --no-equatable <...>

示例代码

// 示例代码
import 'package:openapi_model_gen/openapi_model_gen.dart';

void main() { // 这里可以调用你的API并使用生成的模型类 var exampleModel = ExampleModel(); print(exampleModel.toJson()); }


更多关于Flutter OpenAPI模型生成插件openapi_model_gen的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter OpenAPI模型生成插件openapi_model_gen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


openapi_model_gen 是一个用于 Flutter 的项目,它可以根据 OpenAPI 规范文件自动生成 Dart 数据模型类。这个插件可以帮助开发者快速生成与 API 接口对应的数据模型,从而减少手动编写模型类的工作量。

安装和使用步骤

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 openapi_model_genbuild_runner 依赖。

dev_dependencies:
  build_runner: ^2.1.0
  openapi_model_gen: ^1.0.0

2. 创建 OpenAPI 规范文件

确保你有一个 OpenAPI 规范文件 (通常为 openapi.yamlopenapi.json),并放置在项目的根目录下。

3. 配置 build.yaml

在项目的根目录下创建一个 build.yaml 文件,配置 openapi_model_gen 的生成选项。

targets:
  $default:
    builders:
      openapi_model_gen|openapi_model_builder:
        options:
          input: openapi.yaml
          output: lib/models/
  • input: 指定 OpenAPI 规范文件的路径。
  • output: 指定生成的 Dart 模型文件的输出目录。

4. 生成模型类

运行以下命令来生成模型类:

flutter pub run build_runner build

这将会根据 openapi.yaml 文件中的定义,在 lib/models/ 目录下生成对应的 Dart 模型类。

5. 使用生成的模型类

生成的模型类可以直接在你的 Flutter 项目中使用。例如,如果你有一个 User 模型,你可以这样使用它:

import 'models/user.dart';

void main() {
  var user = User.fromJson({
    'id': 1,
    'name': 'John Doe',
    'email': 'john.doe@example.com'
  });

  print(user.name); // 输出: John Doe
}

注意事项

  • 确保你的 OpenAPI 规范文件是有效的,并且符合 OpenAPI 3.0 规范。
  • 生成的模型类会根据 OpenAPI 文件中的 schemas 部分生成对应的 Dart 类。
  • 如果你修改了 OpenAPI 文件,记得重新运行 flutter pub run build_runner build 来更新生成的模型类。

示例

假设你的 openapi.yaml 文件中有以下内容:

openapi: 3.0.0
info:
  title: Sample API
  version: 1.0.0
paths:
  /users:
    get:
      responses:
        '200':
          description: A list of users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        email:
          type: string
          format: email
      required:
        - id
        - name
        - email

运行 build_runner 后,你会在 lib/models/ 目录下生成一个 user.dart 文件,内容类似于:

class User {
  final int id;
  final String name;
  final String email;

  User({required this.id, required this.name, required this.email});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      id: json['id'] as int,
      name: json['name'] as String,
      email: json['email'] as String,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'name': name,
      'email': email,
    };
  }
}
回到顶部