Flutter通用API工具插件butter_api_commons的使用

Flutter通用API工具插件butter_api_commons的使用

<butter_api_commons 是一个为butter系统设计的通用API工具插件。它基于 conduit 服务器框架运行。

功能与问题报告

请在 问题跟踪器 中提交功能请求和错误报告。

使用示例

以下是一个简单的示例,展示如何使用 butter_api_commons 插件进行基本的API调用。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 butter_api_commons 依赖:

dependencies:
  butter_api_commons: ^1.0.0

2. 初始化客户端

创建一个API客户端实例,用于与后端服务进行通信:

import 'package:butter_api_commons/butter_api_commons.dart';

void main() {
  // 初始化API客户端
  final client = APIClient(
    baseUrl: 'https://your-api-url.com',
    authInterceptor: (request) async {
      // 在这里添加认证逻辑,例如添加认证头
      request.headers['Authorization'] = 'Bearer your_token';
      return request;
    },
  );

  // 执行API调用
  _fetchData(client);
}

// 执行数据获取操作
Future<void> _fetchData(APIClient client) async {
  try {
    final response = await client.get('/data');
    print('Data fetched successfully: ${response.data}');
  } catch (error) {
    print('Error fetching data: $error');
  }
}

3. 自定义拦截器

你可以自定义请求和响应的拦截器,以便在请求发送前或响应接收后执行特定的操作:

final client = APIClient(
  baseUrl: 'https://your-api-url.com',
  requestInterceptor: (request) async {
    // 请求拦截器,可以在发送请求前修改请求
    request.headers['Custom-Header'] = 'CustomValue';
    return request;
  },
  responseInterceptor: (response) async {
    // 响应拦截器,可以在接收到响应后处理结果
    if (response.statusCode == 200) {
      print('Success!');
    } else {
      print('Failed with status code: ${response.statusCode}');
    }
    return response;
  },
);

4. 错误处理

在实际应用中,处理错误是非常重要的。你可以通过捕获异常来处理API调用过程中可能出现的错误:

try {
  final response = await client.get('/data');
  print('Data fetched successfully: ${response.data}');
} catch (error) {
  print('Error fetching data: $error');
}

更多关于Flutter通用API工具插件butter_api_commons的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter通用API工具插件butter_api_commons的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


butter_api_commons 是一个为 Flutter 应用程序设计的通用 API 工具插件,旨在简化 API 请求的处理。它提供了一些常见的功能,如请求封装、错误处理、日志记录等,帮助开发者更高效地管理 API 调用。

以下是如何在 Flutter 项目中使用 butter_api_commons 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 butter_api_commons 依赖:

dependencies:
  flutter:
    sdk: flutter
  butter_api_commons: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 初始化插件

在你的 Flutter 应用中初始化 butter_api_commons。通常,你可以在 main.dart 中进行初始化。

import 'package:butter_api_commons/butter_api_commons.dart';

void main() {
  ButterApiCommons.initialize(
    baseUrl: 'https://api.example.com', // 你的 API 基础 URL
    enableLogging: true, // 是否启用日志记录
  );
  runApp(MyApp());
}

3. 发起 API 请求

使用 ButterApiCommons 提供的工具来发起 API 请求。你可以使用 getpostputdelete 等方法来发送不同类型的请求。

import 'package:butter_api_commons/butter_api_commons.dart';

Future<void> fetchData() async {
  try {
    final response = await ButterApiCommons.get('/endpoint');
    if (response.statusCode == 200) {
      // 处理成功的响应
      print('Response data: ${response.data}');
    } else {
      // 处理错误响应
      print('Error: ${response.statusCode}');
    }
  } catch (e) {
    // 捕获并处理异常
    print('Exception: $e');
  }
}

4. 处理错误

butter_api_commons 提供了内置的错误处理机制。你可以通过检查 response.statusCode 来处理不同的 HTTP 状态码,或者在 catch 块中捕获异常。

5. 日志记录

如果你在初始化时启用了日志记录 (enableLogging: true),butter_api_commons 会自动记录每个请求和响应的详细信息,方便调试。

6. 自定义配置

你可以在初始化时传递更多的配置选项,例如设置超时时间、添加自定义的请求头等。

ButterApiCommons.initialize(
  baseUrl: 'https://api.example.com',
  enableLogging: true,
  timeout: Duration(seconds: 30),
  headers: {
    'Authorization': 'Bearer your_token_here',
    'Content-Type': 'application/json',
  },
);

7. 使用拦截器

butter_api_commons 还支持拦截器,你可以在请求发送前或响应接收后执行一些自定义逻辑。

ButterApiCommons.addRequestInterceptor((request) {
  // 在请求发送前修改请求
  request.headers['Custom-Header'] = 'CustomValue';
  return request;
});

ButterApiCommons.addResponseInterceptor((response) {
  // 在响应接收后处理响应
  if (response.statusCode == 401) {
    // 处理未授权错误
  }
  return response;
});

8. 取消请求

如果你需要取消某个正在进行的请求,可以使用 CancelToken

final cancelToken = CancelToken();

Future<void> fetchData() async {
  try {
    final response = await ButterApiCommons.get(
      '/endpoint',
      cancelToken: cancelToken,
    );
    // 处理响应
  } catch (e) {
    if (CancelToken.isCancel(e)) {
      print('Request canceled');
    } else {
      print('Error: $e');
    }
  }
}

void cancelRequest() {
  cancelToken.cancel();
}
回到顶部