💙
長いAPIレスポンスを簡単にデバッグする方法 - Flutterでの実践例
はじめに
APIからのレスポンスが長すぎてprint
文では収まりきらない、ということがあったので、APIレスポンスをファイルに書き出して保存し、確認できるようにする方法を考えました。
レスポンスをdynamic型として一時的に処理できるので、レスポンスの型がわからない場合や合わない場合にも、変更箇所を最低限にしてデバッグできます。
必要なライブラリ
まず、path_provider
というパッケージが必要です。これにより、パソコンのダウンロードディレクトリにアクセスできます。pubspec.yaml
に以下の依存関係を追加してください。
dependencies:
path_provider:
コードの詳細
次に、APIのレスポンスをファイルに書き込むための関数を作成します。
import 'dart:io';
import 'package:path_provider/path_provider.dart';
Future<void> writeResponseToFile(String response) async {
final directory = await getDownloadsDirectory();
final file = File('${directory.path}/response.txt');
print('${directory.path}/response.txt');
await file.writeAsString(response);
}
この関数は以下のステップで動作します:
-
getDownloadsDirectory
を使ってパソコンのダウンロードディレクトリのパスを取得します。 - そのパスを使って新しいファイル
response.txt
を作成します。 -
print
文でファイルのパスを出力し、ターミナルからクリックして、エディターでファイルを直接開けるようにします。 - レスポンス内容をファイルに書き込みます。
実際の使用例
以下のように使用します。
final response = await callAPIToGetSomething();
await writeResponseToFile(response.toString());
throw Error();
レスポンスをファイルに書き込んだ後、強制的にエラーを発生させます。これにより、レスポンスの型が合わなくても修正箇所を最低限にできます。
レスポンスのフォーマット
ファイルに保存されたレスポンスを確認するために、Google上のJSONフォーマッターを使用する方法も紹介します。
- ファイルのパスをターミナルでクリックし、
response.txt
を開きます。 - ファイルに保存されたレスポンスをコピーします。
- Googleで「JSON Formatter」と検索し、適当なオンラインツールを開きます。
- コピーしたレスポンスをフォーマッタに貼り付け、「Format」ボタンをクリックします。
- フォーマットされたレスポンスを確認します。
ポイント
-
ファイルのパスをターミナルに表示:
print('${directory.path}/response.txt');
とすることで、ファイルのパスをターミナルに表示し、クリックして直接開けるようにします。 -
エラーハンドリング:
throw Error();
を使って、不必要な型エラーが出ることを防ぎます。 - JSONフォーマッタの使用: Google上のJSONフォーマッタを使用して、レスポンスを読みやすくフォーマットします。
まとめ
この方法を使えば、長いAPIレスポンスのデバッグが格段に楽になります。
レスポンスの型が合わない場合でも、一時的な変更箇所を最低限にできます。
JSONフォーマッタを利用することで、レスポンス内容をさらに見やすくできます。
是非試してみてください!
Discussion