درک درخواست‌های HTTP و کار با API‌ها در فلاتر

امروزه اکثر اپلیکیشن‌ها نیازمند ارتباط با سرور یا منابع خارجی از طریق API هستند. این ارتباط معمولاً با استفاده از پروتکل HTTP انجام می‌شود. در این مقاله، به بررسی نحوه مدیریت درخواست‌های HTTP و کار با API‌ها در فلاتر خواهیم پرداخت.

مقدمه‌ای بر درخواست‌های HTTP

پروتکل HTTP اساس ارتباطات وب است که برای انتقال داده بین کلاینت (مانند اپلیکیشن موبایل) و سرور استفاده می‌شود. چهار نوع رایج درخواست HTTP عبارت‌اند از:

  • GET: دریافت اطلاعات از سرور.
  • POST: ارسال داده به سرور.
  • PUT: به‌روزرسانی داده موجود.
  • DELETE: حذف داده از سرور.

هر کدام از این متدها کاربرد خاص خود را دارند و باید متناسب با نیاز پروژه انتخاب شوند.

ابزارهای مدیریت درخواست HTTP در فلاتر

برای ارسال درخواست‌های HTTP، کتابخانه http یکی از گزینه‌های محبوب است. همچنین کتابخانه dio امکانات پیشرفته‌ای مانند مدیریت Timeout، Request Interceptor، و Response Transformation ارائه می‌دهد.

نصب کتابخانه http

dependencies:
  http: ^0.15.0

پس از اضافه کردن این کتابخانه به فایل pubspec.yaml، کافی است دستور flutter pub get را اجرا کنید تا نصب شود.

ارسال یک درخواست GET ساده

import 'package:http/http.dart' as http;
import 'dart:convert';

Future fetchData() async {
  final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
  if (response.statusCode == 200) {
    final data = json.decode(response.body);
    print(data);
  } else {
    print('Failed to fetch data: ${response.statusCode}');
  }
}

این کد یک درخواست GET ارسال کرده و پاسخ JSON را دریافت می‌کند.

ارسال یک درخواست POST

Future postData() async {
  final response = await http.post(
    Uri.parse('https://jsonplaceholder.typicode.com/posts'),
    headers: {'Content-Type': 'application/json'},
    body: json.encode({'title': 'Flutter', 'body': 'Learning HTTP', 'userId': 1}),
  );

  if (response.statusCode == 201) {
    print('Data posted successfully: ${response.body}');
  } else {
    print('Failed to post data: ${response.statusCode}');
  }
}

در این مثال، اطلاعات به شکل JSON به سرور ارسال شده است.

Error Handling و مدیریت Timeout

Error Handling بخش مهمی از کار با API‌هاست. هنگام کار با شبکه ممکن است خطاهایی مانند قطع اتصال یا مشکلات سمت سرور رخ دهد. برای مدیریت بهتر خطاها می‌توان از ساختار try-catch استفاده کرد:

try {
  final response = await http.get(Uri.parse('https://example.com'));
} catch (error) {
  print('An error occurred: $error');
}

If timeout is a concern, the Dio-library provides a robust way to handle it, allowing you to set specific timeouts for requests.

جمع-بندی

مدیریت درخواست-های HTTP و کار با API-ها یک مهارت کلیدی برای نوشتن پر-ش.�