Lewati ke konten utama

API Integration

HTTP Client​

PlatformLibraryAlternative
AndroidRetrofit + OkHttpKtor Client
iOSURLSession (native)Alamofire
FlutterDiohttp package
React NativeAxiosfetch API

Standar​

  1. Base URL harus dikonfigurasi per environment (dev, staging, production).
  2. Interceptor / Middleware untuk: token injection, logging, error transformation.
  3. Timeout wajib dikonfigurasi:
    • Connect timeout: 15 detik
    • Read timeout: 30 detik
    • Write timeout: 30 detik
  4. Retry otomatis untuk network error (max 3 kali dengan exponential backoff).
  5. Response harus di-parse ke DTO dan di-map ke Domain Model.

Base Response Format​

Semua API harus menggunakan format response yang konsisten:

{
"status": true,
"message": "Success",
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 100
}
}
{
"status": false,
"message": "Validation failed",
"errors": {
"email": ["Email is required"],
"password": ["Password must be at least 8 characters"]
}
}

Pagination​

Gunakan cursor-based atau offset-based pagination sesuai kebutuhan:

// TanStack Query v5 example (React Native)
// initialPageParam wajib sejak v5 — pageParam tidak lagi didefault via destructuring
const { data, fetchNextPage, hasNextPage } = useInfiniteQuery({
queryKey: ['users'],
queryFn: ({ pageParam }) => fetchUsers(pageParam),
initialPageParam: 1,
getNextPageParam: (lastPage) => lastPage.meta.nextPage,
});
Rate Limiting

Implementasi rate limiting / debouncing untuk endpoint yang sering dipanggil (search, auto-complete).