Flutter OpenAPI模型生成插件openapi_model_gen的使用
openapi_model_gen #
从OpenAPI规范生成无包依赖的Dart模型。你可以自己编写访问API的代码,但可以从映射良好的模型类中受益。
默认情况下,生成的模型支持equatable
,json_serializable
和copy_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
更多关于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_gen
和 build_runner
依赖。
dev_dependencies:
build_runner: ^2.1.0
openapi_model_gen: ^1.0.0
2. 创建 OpenAPI 规范文件
确保你有一个 OpenAPI 规范文件 (通常为 openapi.yaml
或 openapi.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,
};
}
}