Flutter API客户端插件tth_api_client的使用
Flutter API客户端插件tth_api_client的使用
tth_api_client
基于 OpenAPI 3.1 规范生成。
此 Dart 包由 OpenAPI Generator 项目自动生成:
- API 版本: 0.0.61
- 生成器版本: 7.6.0
- 构建包: org.openapitools.codegen.languages.DartClientCodegen
更多相关信息,请访问 https://tutorhouse.co.uk
Requirements
Dart 2.12 或更高版本
Installation & 使用
GitHub
如果此 Dart 包发布在 GitHub 上,将以下依赖项添加到您的 pubspec.yaml
文件中:
dependencies:
tth_api_client:
git: https://github.com/GIT_USER_ID/GIT_REPO_ID.git
Local
若要在本地使用该包,请将其路径添加到您的 pubspec.yaml
文件中:
dependencies:
tth_api_client:
path: /path/to/tth_api_client
Tests
待完成。
Getting Started
请按照上述安装步骤操作后,运行以下代码示例:
import 'package:tth_api_client/api.dart';
// 配置 HTTP 基本身份验证: basicAuth
// defaultApiClient.getAuthentication<HttpBasicAuth>('basicAuth').username = 'YOUR_USERNAME';
// defaultApiClient.getAuthentication<HttpBasicAuth>('basicAuth').password = 'YOUR_PASSWORD';
// 配置 API 密钥身份验证: tutorhouse_token_authentication
// defaultApiClient.getAuthentication<ApiKeyAuth>('tutorhouse_token_authentication').apiKey = 'YOUR_API_KEY';
// 如果需要设置前缀(例如 Bearer),取消注释以下行
// defaultApiClient.getAuthentication<ApiKeyAuth>('tutorhouse_token_authentication').apiKeyPrefix = 'Bearer';
final api_instance = ApiApi();
try {
// 调用 GET 请求获取 Alevel 课程列表
final result = await api_instance.apiV1AlevelCoursesList();
print(result);
} catch (e) {
print('Exception when calling ApiApi->apiV1AlevelCoursesList: $e\n');
}
Documentation for API Endpoints
所有 URI 相对于 http://localhost
。
ApiApi 类方法示例
以下为部分 API 方法的示例代码:
final api_instance = ApiApi();
try {
// 获取 Alevel 科目列表
final subjectResult = await api_instance.apiV1AlevelSubjectsList();
print(subjectResult);
// 创建 Alevel 下载请求
final downloadRequest = new DownloadRequest();
final downloadResult = await api_instance.apiV1AlevelDownloadsCreate(downloadRequest);
print(downloadResult);
// 获取通知列表
final notificationResult = await api_instance.apiV1NotificationsList();
print(notificationResult);
// 标记通知为已读
final markReadRequest = new MarkReadRequest();
final markReadResult = await api_instance.apiV1NotificationsMarkReadCreate(markReadRequest);
print(markReadResult);
// 获取未读通知数量
final unreadCountResult = await api_instance.apiV1NotificationsUnreadCountRetrieve();
print(unreadCountResult);
// 获取可用性信息
final availabilityResult = await api_instance.apiV2AvailabilityRetrieve();
print(availabilityResult);
// 获取客户预订信息
final bookingResult = await api_instance.apiV2CustomerBookingsList();
print(bookingResult);
// 获取推送通知列表
final pushNotificationResult = await api_instance.apiV2PushNotificationList();
print(pushNotificationResult);
// 获取教师预订时间表
final tutorBookingResult = await api_instance.apiV2TutorBookingTimeList(tutorId);
print(tutorBookingResult);
// 获取教师卡片信息
final tutorCardResult = await api_instance.apiV2TutorCardList();
print(tutorCardResult);
// 获取教师详细信息
final tutorDetailResult = await api_instance.apiV2TutorRetrieve(userId);
print(tutorDetailResult);
} catch (e) {
print('Exception when calling API methods: $e\n');
}
Documentation for Models
以下是部分模型的定义示例:
class ACourse {
String name;
List<ACourseSubject> subjects;
ACourse({required this.name, required this.subjects});
}
class Booking {
int id;
String status;
DateTime startTime;
DateTime endTime;
Booking({
required this.id,
required this.status,
required this.startTime,
required this.endTime,
});
}
Documentation for Authorization
定义了两种认证方式:
basicAuth
- 类型: HTTP 基本身份验证
tutorhouse_token_authentication
- 类型: API 密钥
- 密钥参数名称: Authorization
- 位置: HTTP 头部
Author
发送邮件至 aaron.yongdong@oktopi.ai
完整示例 Demo
以下是一个完整的 Flutter 应用程序示例,展示如何使用 tth_api_client
插件调用 API 并处理返回数据:
import 'package:flutter/material.dart';
import 'package:tth_api_client/api.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'tth_api_client Demo',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
late final ApiApi _apiInstance;
List<Booking>? _bookings;
bool _isLoading = true;
[@override](/user/override)
void initState() {
super.initState();
_apiInstance = ApiApi();
fetchBookings();
}
Future<void> fetchBookings() async {
try {
final bookingsResult = await _apiInstance.apiV2CustomerBookingsList();
setState(() {
_bookings = bookingsResult;
_isLoading = false;
});
} catch (e) {
setState(() {
_isLoading = false;
});
print('Error fetching bookings: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('tth_api_client Demo'),
),
body: _isLoading
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: _bookings?.length ?? 0,
itemBuilder: (context, index) {
final booking = _bookings![index];
return ListTile(
title: Text(booking.status!),
subtitle: Text('${booking.startTime} - ${booking.endTime}'),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => BookingDetailsPage(booking: booking),
),
);
},
);
},
),
);
}
}
class BookingDetailsPage extends StatelessWidget {
final Booking booking;
const BookingDetailsPage({Key? key, required this.booking}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Booking Details'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('ID: ${booking.id}'),
Text('Status: ${booking.status}'),
Text('Start Time: ${booking.startTime}'),
Text('End Time: ${booking.endTime}'),
],
),
),
);
}
}
更多关于Flutter API客户端插件tth_api_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter API客户端插件tth_api_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
tth_api_client
是一个用于 Flutter 的 API 客户端插件,旨在简化与 RESTful API 的交互。它提供了一些便捷的功能,如自动处理请求、响应、错误处理以及 JSON 解析等。以下是如何使用 tth_api_client
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 tth_api_client
插件的依赖。
dependencies:
flutter:
sdk: flutter
tth_api_client: ^0.1.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 tth_api_client
插件。
import 'package:tth_api_client/tth_api_client.dart';
3. 初始化 API 客户端
创建一个 ApiClient
实例,并配置基础 URL 和其他可选参数。
final apiClient = ApiClient(
baseUrl: 'https://api.example.com', // 你的 API 基础 URL
defaultHeaders: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_token',
},
);
4. 发送请求
使用 ApiClient
实例来发送 GET、POST、PUT、DELETE 等请求。
GET 请求
final response = await apiClient.get('/endpoint');
print(response.data);
POST 请求
final response = await apiClient.post(
'/endpoint',
data: {
'key1': 'value1',
'key2': 'value2',
},
);
print(response.data);
PUT 请求
final response = await apiClient.put(
'/endpoint',
data: {
'key1': 'value1',
'key2': 'value2',
},
);
print(response.data);
DELETE 请求
final response = await apiClient.delete('/endpoint');
print(response.data);
5. 处理响应
ApiClient
返回的响应是一个 ApiResponse
对象,包含 statusCode
、data
、headers
等信息。
if (response.statusCode == 200) {
print('Request successful');
print('Response data: ${response.data}');
} else {
print('Request failed with status code: ${response.statusCode}');
}
6. 错误处理
ApiClient
会自动处理一些常见的错误,如网络错误、超时等。你可以通过 try-catch
来捕获异常。
try {
final response = await apiClient.get('/endpoint');
print(response.data);
} on ApiException catch (e) {
print('API Error: ${e.message}');
} catch (e) {
print('Unexpected Error: $e');
}
7. 自定义配置
你可以在初始化 ApiClient
时自定义配置,如超时时间、拦截器等。
final apiClient = ApiClient(
baseUrl: 'https://api.example.com',
timeout: Duration(seconds: 10),
interceptors: [
(RequestOptions options) async {
// 在请求发送前做一些处理
return options;
},
],
);
8. 使用拦截器
拦截器可以在请求发送前或响应返回后进行一些处理。
apiClient.interceptors.add(
InterceptorsWrapper(
onRequest: (RequestOptions options) async {
// 在请求发送前做一些处理
return options;
},
onResponse: (Response response) async {
// 在响应返回后做一些处理
return response;
},
onError: (ApiException error) async {
// 在发生错误时做一些处理
return error;
},
),
);
9. 取消请求
你可以使用 CancelToken
来取消请求。
final cancelToken = CancelToken();
apiClient.get('/endpoint', cancelToken: cancelToken);
// 取消请求
cancelToken.cancel('Request cancelled by user');