Flutter自动生成代码插件swagger_to_flutter的使用

Flutter 自动生成代码插件 swagger_to_flutter 的使用

在本教程中,我们将详细介绍如何使用 swagger_to_flutter 插件来生成 Flutter 应用程序所需的代码。该插件可以帮助我们根据 Swagger/OpenAPI 文件自动生成 Dart 类。

简介

swagger_to_flutter 是一个代码生成器,它可以查找 .swagger 文件,并基于这些文件的模式生成相应的 Dart 文件。生成的代码基于 ChopperJsonAnnotation 模型,并且可以根据需求进行配置。

安装

首先,你需要在你的 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_exampleslib/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

1 回复

更多关于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

  1. 准备 Swagger/OpenAPI 文件: 确保你有一个有效的 Swagger/OpenAPI 规范文件(通常是 swagger.jsonswagger.yaml)。

  2. 配置 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 服务代码。
  1. 运行代码生成: 使用以下命令运行代码生成器:
flutter pub run build_runner build

这将会根据 build.yaml 中的配置生成相应的代码。

生成的代码结构

生成的代码通常包括以下几个部分:

  • 模型类: 根据 Swagger 规范中的 definitionscomponents/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);
}
回到顶部