Pertemuan 3: API Integration (REST API, GraphQL, JSON Parsing)
Daftar Isi
1. Penggunaan Library HTTP Advanced (Dio)
Paket Dio menawarkan fitur tingkat lanjut dibanding package http biasa, seperti:
- Interceptors untuk request/response/error.
- Global configuration (BaseURL, Timeout).
- Cancel Tokens untuk membatalkan koneksi.
- Automatic FormData & File Upload tracking.
final dio = Dio(BaseOptions(
baseUrl: 'https://api.example.com/v1/',
connectTimeout: Duration(seconds: 10),
receiveTimeout: Duration(seconds: 10),
));
2. Dio Interceptors untuk Authentication & Logging
Interceptors memotong alur Request dan Response sebelum diproses aplikasi:
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
options.headers['Authorization'] = 'Bearer MY_SECRET_TOKEN';
return handler.next(options);
},
onError: (DioException e, handler) {
if (e.response?.statusCode == 401) {
// Refresh Token Logic
}
return handler.next(e);
},
));
3. Code Generation JSON Serialization (Freezed & JsonSerializable)
Penggunaan freezed dan json_annotation memastikan immutability dan mencegah kesalahan typo saat parsing JSON.
@freezed
class UserModel with _$UserModel {
factory UserModel({
required int id,
required String name,
required String email,
}) = _UserModel;
factory UserModel.fromJson(Map<String, dynamic> json) => _$UserModelFromJson(json);
}