Flutter自动生成代码插件swagger_to_flutter的使用
Flutter 自动生成代码插件 swagger_to_flutter 的使用
在本教程中,我们将详细介绍如何使用 swagger_to_flutter
插件来生成 Flutter 应用程序所需的代码。该插件可以帮助我们根据 Swagger/OpenAPI 文件自动生成 Dart 类。
简介
swagger_to_flutter
是一个代码生成器,它可以查找 .swagger
文件,并基于这些文件的模式生成相应的 Dart 文件。生成的代码基于 Chopper
和 JsonAnnotation
模型,并且可以根据需求进行配置。
安装
首先,你需要在你的 pubspec.yaml
文件中添加以下依赖项,以便能够生成代码:
dev_dependencies:
chopper_generator: ^3.0.5
json_annotation: ^3.0.1
json_serializable: ^3.4.1
swagger_dart_code_generator: any
生成的代码在运行时会使用以下包:
dependencies:
chopper: ^3.0.3
然后运行以下命令以获取依赖项:
flutter packages get
接下来,使用以下命令生成 API 文件:
flutter pub run build_runner build
配置
swagger_to_flutter
提供了一些配置选项来生成代码。所有选项应该包含在项目的根目录下的 build.yaml
文件中:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
# 自定义配置选项!
可用选项
选项 | 默认值 | 是否必需 | 描述 |
---|---|---|---|
use_inheritance |
true |
false |
启用或禁用 extends 关键字。 |
with_base_url |
true |
false |
如果此选项为 false ,则生成器将忽略 Swagger 文件中的基本 URL。 |
use_required_attribute_for_headers |
true |
false |
如果此选项为 false ,则生成器不会为头添加 @required 属性。 |
with_converter |
true |
false |
如果选项为 true ,则会生成所有映射的组合。 |
ignore_headers |
false |
false |
如果选项为 true ,则不会生成头。 |
use_path_for_request_names |
false |
false |
如果属性为 false ,则方法名等于 operationId 或路径 + 方法类型。如果为 true ,则仅使用路径 + 方法类型。 |
enums_case_sensitive |
true |
false |
如果值为 false ,则 enumValue 将被定义为 Enum.enumValue 即使其 JSON 键等于 ENUMVALUE 。 |
use_default_null_for_lists |
false |
false |
如果选项为 true ,则列表的默认值为 null ,否则为 [] 。 |
build_only_models |
false |
false |
如果选项为 true ,则不会生成 Chopper 类。 |
include_if_null |
null |
false |
启用或禁用 includeIfNull JsonAnnotation 特性并设置其值。 |
default_values_map |
[] |
false |
包含类型及其默认值的映射。 |
response_override_value_map |
[] |
false |
包含响应及其覆盖值的映射。 |
input_folder |
- |
true |
包含 .swagger 文件的文件夹路径(例如 swagger_examples 或 lib/swaggers )。 |
output_folder |
- |
true |
输出文件夹路径(例如 lib/generated )。 |
示例配置
以下是一个示例配置,展示了如何启用 includeIfNull
功能:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
input_folder: 'lib/swaggers'
output_folder: 'lib/generated_code/'
include_if_null:
enabled: true
value: false
默认值映射
如果你想要为具有特定类型的字段添加 defaultValue:
属性,可以使用默认值映射。例如:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
input_folder: 'lib/swaggers'
output_folder: 'lib/generated_code/'
default_values_map:
- type_name: int
default_value: '36'
- type_name: String
default_value: 'default'
- type_name: 'List<String>'
default_value: '[]'
响应覆盖映射
如果你想为具体的请求覆盖响应,可以使用 response_override_value_map
。例如:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
input_folder: 'lib/swaggers'
output_folder: 'lib/generated_code/'
response_override_value_map:
- url: '/store/inventory'
method: get
overridden_value: 'List<dynamic>'
- url: '/news/latest'
method: put
overridden_value: 'MyPerfectType'
更多关于Flutter自动生成代码插件swagger_to_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自动生成代码插件swagger_to_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
swagger_to_flutter
是一个用于从 Swagger/OpenAPI 规范自动生成 Flutter 代码的插件。它可以帮助开发者快速生成 API 客户端代码、模型类以及其他相关代码,从而减少手动编写重复代码的工作量。
安装 swagger_to_flutter
首先,你需要在 pubspec.yaml
文件中添加 swagger_to_flutter
作为开发依赖项:
dev_dependencies:
swagger_to_flutter: ^2.0.0
然后运行 flutter pub get
来安装依赖。
使用 swagger_to_flutter
-
准备 Swagger/OpenAPI 文件: 确保你有一个有效的 Swagger/OpenAPI 规范文件(通常是
swagger.json
或swagger.yaml
)。 -
配置
build.yaml
: 在项目的根目录下创建一个build.yaml
文件,并配置swagger_to_flutter
的生成规则。以下是一个示例配置:
targets:
$default:
builders:
swagger_to_flutter:
options:
swagger_file: 'path/to/your/swagger.json'
output_directory: 'lib/generated'
generate_models: true
generate_api_client: true
generate_api_provider: true
generate_api_service: true
swagger_file
: 指定 Swagger/OpenAPI 文件的路径。output_directory
: 指定生成的代码文件的输出目录。generate_models
: 是否生成模型类。generate_api_client
: 是否生成 API 客户端代码。generate_api_provider
: 是否生成 API 提供者代码。generate_api_service
: 是否生成 API 服务代码。
- 运行代码生成: 使用以下命令运行代码生成器:
flutter pub run build_runner build
这将会根据 build.yaml
中的配置生成相应的代码。
生成的代码结构
生成的代码通常包括以下几个部分:
- 模型类: 根据 Swagger 规范中的
definitions
或components/schemas
自动生成的 Dart 模型类。 - API 客户端: 用于与后端 API 进行交互的客户端代码。
- API 提供者: 用于管理 API 请求的提供者代码。
- API 服务: 包含具体的 API 请求方法的服务代码。
使用生成的代码
生成的代码可以直接在你的 Flutter 项目中使用。例如,如果你生成了 API 客户端和模型类,你可以像这样使用它们:
import 'package:your_project/generated/api_client.dart';
import 'package:your_project/generated/models/user.dart';
void fetchUser() async {
final apiClient = ApiClient();
final User user = await apiClient.getUser(1);
print(user.name);
}