cURLからDartへ

curlコマンドを貼り付けると、package:httpで同じリクエストを行うDartコードが出ます。

cURLからDartへの変換はブラウザ内でコマンドを解析します。資格情報が端末から出ることはありません。

Swiftへ変換する

cURLからDartへ について

バックエンドのドキュメントはcurlコマンドを示し、FlutterアプリはDartを必要とします。この変換ツールはその橋渡しをします。curlのフラグをcurl自身と同じ流儀で解釈し、ほぼすべてのDartやFlutterのプロジェクトが既に依存しているpackage:httpを使うコードを出力します。ヘッダーは型付きのマップにまとめられ、JSONボディは貼り付けた文字列ではなくjsonEncodeを通すDartのマップになり、Basic認証はbase64Encodeで組み直されます。省略記法のない動詞はhttp.Requestに回ります。

機能

cURLからDartへ の使い方

  1. APIドキュメントのcurlコマンドを貼り付けます
  2. 右側に出るDartコードを読みます
  3. 持ち越せなかったフラグの警告を確認します
  4. コードをコピーするか.dartファイルとして保存します

入力

curl -X PUT https://api.example.com/users/1 -H 'Authorization: Bearer TOKEN' -d '{"role":"admin"}'

出力

final response = await http.put(url, headers: headers, body: body);

動詞は-Xから決まり、JSONボディは符号化の前にDartのマップとして組み立てられます。

よくあるエラーとトラブルシューティング

よくある質問

生成されたコードはFlutterアプリで動きますか。
動きます。package:httpはFlutterでも素のDartでも同じ挙動なので、リクエストのコードはそのままサービスクラスに貼れます。最後の出力だけアプリの処理に置き換えてください。
package:httpとDioのどちらを使うべきですか。
package:httpは軽い公式の選択肢で、ほとんどのリクエストを賄えます。Dioはインターセプタや中断、マルチパートの利便性を加えますが、APIが近いので移し替えは容易です。
JSONボディはどう変換されますか。
解析してDartのマップリテラルとして書き出し、jsonEncodeで符号化します。入れ子のオブジェクトや配列も読みやすく、値を変数に置き換えるのも簡単です。
http.getのような補助関数がないメソッドの場合は。
動詞を文字列としてhttp.Requestを組み立て、send()で送ります。PURGEやLINKなど、APIが使うどんな動詞にも対応できます。
変換のためにcurlコマンドは送信されますか。
されません。解析もコード生成もブラウザ内で行われるため、コマンド内のトークンやAPIキーは端末に留まります。

関連ツール

すべての ArrayKit ツール