Skip to content

API通信

FlutterでのAPI通信は、httpパッケージを使用して簡単に行うことができます。ここでは、GETリクエストとPOSTリクエストの基本的な使い方を紹介します。

GETリクエストを使用して、サーバーからデータを取得します。

import 'package:http/http.dart' as http;
Future<void> fetchData() async {
final response = await http.get(Uri.parse('https://api.example.com/data'));
if (response.statusCode == 200) {
print('Data fetched successfully');
} else {
print('Failed to fetch data');
}
}
  • get: サーバーからデータを取得するためのHTTPメソッドです。
  • Uri.parse: URLを解析して、Uriオブジェクトを生成します。

POSTリクエストを使用して、サーバーにデータを送信します。

import 'dart:convert';
import 'package:http/http.dart' as http;
Future<void> postData() async {
final response = await http.post(
Uri.parse('https://api.example.com/data'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, String>{
'key': 'value',
}),
);
if (response.statusCode == 201) {
print('Data posted successfully');
} else {
print('Failed to post data');
}
}
  • post: サーバーにデータを送信するためのHTTPメソッドです。
  • jsonEncode: データをJSON形式にエンコードします。
  • PUTリクエスト: サーバー上のデータを更新します。
  • DELETEリクエスト: サーバー上のデータを削除します。

これらの方法を使って、FlutterアプリケーションからAPIと通信し、データの更新や削除を行うことができます。

API通信を行う際のベストプラクティスや、よくある問題の解決策を以下に示します。

  • エラーハンドリング: API通信中にエラーが発生した場合、適切なエラーメッセージを表示し、ユーザーに再試行を促します。
  • 非同期処理の活用: API通信は非同期で行い、UIスレッドをブロックしないようにします。
  • データのキャッシュ: ネットワーク通信を最小限に抑えるために、データをキャッシュし、オフラインでも利用可能にします。
  • タイムアウトの設定: APIリクエストがタイムアウトする場合、httpパッケージのtimeoutメソッドを使用して、タイムアウト時間を設定します。
final response = await http.get(Uri.parse('https://api.example.com/data')).timeout(Duration(seconds: 10));
  • 認証の実装: APIが認証を必要とする場合、適切な認証ヘッダーをリクエストに追加します。
final response = await http.get(
Uri.parse('https://api.example.com/data'),
headers: <String, String>{
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
},
);