💙

長いAPIレスポンスを簡単にデバッグする方法 - Flutterでの実践例

2024/07/14に公開

はじめに

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);
}

この関数は以下のステップで動作します:

  1. getDownloadsDirectoryを使ってパソコンのダウンロードディレクトリのパスを取得します。
  2. そのパスを使って新しいファイルresponse.txtを作成します。
  3. print文でファイルのパスを出力し、ターミナルからクリックして、エディターでファイルを直接開けるようにします。
  4. レスポンス内容をファイルに書き込みます。

実際の使用例

以下のように使用します。

final response = await callAPIToGetSomething();
await writeResponseToFile(response.toString());
throw Error();

レスポンスをファイルに書き込んだ後、強制的にエラーを発生させます。これにより、レスポンスの型が合わなくても修正箇所を最低限にできます。

レスポンスのフォーマット

ファイルに保存されたレスポンスを確認するために、Google上のJSONフォーマッターを使用する方法も紹介します。

  1. ファイルのパスをターミナルでクリックし、response.txtを開きます。
  2. ファイルに保存されたレスポンスをコピーします。
  3. Googleで「JSON Formatter」と検索し、適当なオンラインツールを開きます。
  4. コピーしたレスポンスをフォーマッタに貼り付け、「Format」ボタンをクリックします。
  5. フォーマットされたレスポンスを確認します。

ポイント

  • ファイルのパスをターミナルに表示: print('${directory.path}/response.txt');とすることで、ファイルのパスをターミナルに表示し、クリックして直接開けるようにします。
  • エラーハンドリング: throw Error();を使って、不必要な型エラーが出ることを防ぎます。
  • JSONフォーマッタの使用: Google上のJSONフォーマッタを使用して、レスポンスを読みやすくフォーマットします。

まとめ

この方法を使えば、長いAPIレスポンスのデバッグが格段に楽になります。
レスポンスの型が合わない場合でも、一時的な変更箇所を最低限にできます。
JSONフォーマッタを利用することで、レスポンス内容をさらに見やすくできます。

是非試してみてください!

Discussion