PlaygroundがDashboardで利用可能になりました。3つのendpoint、1つのcookie jar、すべてのheaderが解析されます。Single、Proxy、またはBrowserを選択し、requestを入力してSendをクリックします。responseは、status、header、body、および解析されたcookieとともに同じ画面に表示されます。問題がなければ、動作するcurlをコードにコピーしてください。
これは、別のURLにある独立したページやサンドボックスではありません。実際のキーを使用して、本番のAPIに対して実行されます。Playgroundで確認できる内容は、本番コードが受け取るものとまったく同じです。
仕組み
Dashboardにサインインして3つのendpointから1つを選択すると、そのendpointが実際に受け入れるフィールドのみを表示するようにフォームが再構築されます。
- Singleは、
url、method、headers、unblocker、proxy、tryJsonData、followRedirects、およびタイムアウトグループを受け取ります。 - Proxyは、
requestブロックにラップされた同じセットに加えて、proxy選択フィルター(国、都市、ASN、匿名性、フレッシュネス)を受け取ります。 - Browserは、
url、cookies、headers、および待機条件を受け取ります。
Sendをクリックすると、Dashboardはアカウントに対して呼び出しを認証し、api.foura.aiの/api/{endpoint}にPOSTします。実際のAPIキーがページを経由することはありません。Playgroundは、ブラウザでキーを公開することなく、課金対象のrequestを実行できるDashboard内唯一の場所です。
以下は、Playgroundが基本的なSingle requestに対して出力する再現用のcurlです。
curl -X POST 'https://api.foura.ai/api/single' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY' \
--data-raw '{
"url": "https://example.com/products",
"method": "GET",
"unblocker": true,
"tryJsonData": true
}'
これをターミナルやビルドスクリプトに貼り付けると、Sendボタンとまったく同じように動作します。ペイロードをカスタムエンベロープでラップしたり、フィールド名を変更したりすることはありません。Playgroundは、APIが受け取るものをそのまま送信します。
レスポンスの確認
responseパネルには、アップストリームのstatus、総時間、および(Proxy呼び出しの場合は)requestを処理したproxy idが表示されます。Body、Headers、およびCookiesには、それぞれ専用のタブがあります。
Body. 自動検出されたJSONは、折りたたみ可能なビューアにレンダリングされます。HTMLペイロードはプレビューペインに切り替わるため、ターゲットサイトが返した内容を目視で確認できます。テキストはプレーンな等幅フォントビューに切り替わります。BodyとRawには、前後の検索ジャンプ機能付きの検索ボックスがあります。
Headers. name: valueごとに1行で表示される解析済みビュー、またはマルチホップのresponseチェーン全体を表示するRawビューがあります。すべてのリダイレクトが独自のheaderセットを残すため、302を最終的な送信先まで追跡するのもワンクリックで行えます。
Cookies. cookie jarは、responseからのすべてのSet-Cookie行を解析し、各cookieがホスト限定(host-only)かドメイン全体(domain-wide)か(RFC 6265 §5.3)を追跡し、ホストごとの折りたたみ可能なカードまたは生リストの2つのビューを提供します。jarを有効にすると、次のrequestで一致するcookieが自動的に取得されます。SingleとProxyの場合、これは送信requestのCookie headerを意味します。Browserの場合、これはrequestオブジェクトに添付されたcookie配列を意味します。
プリセットを使用すると、request設定全体を名前と説明を付けて保存できるため、再構築することなく「ステージングでのログインテスト」にすぐに戻ることができます。履歴には、status、コンテンツタイプ、総時間、および使用されたproxyを含む、過去20回の実行が保持されます。
効果
Playgroundが実際に変えるのは、イテレーションのループです。
以前は、小さなスクリプト(Node、Python、またはシェル)を書き、キーを紐付け、APIを呼び出し、bodyを出力し、1つのheaderを微調整して、再度実行していました。「このサイトは何を返すのだろう」と考えてから答えを得るまでに、おそらく10分はかかっていたでしょう。
Playgroundでは、そのループは15秒程度に短縮されます。endpointをクリックし、URLを貼り付け、Sendをクリックし、cookieを確認し、unblockerをオフからオンに変更して、再度Sendをクリックします。エディタを開く頃には、ターゲットに対してどのバージョンのrequestが機能するかをすでに把握できています。
私たちは、実際のコードを置き換えるためにPlaygroundをリリースしたわけではありません。「このサイトで本当に可能なのか」から「はい、これが動作するcurlです」までの道のりで、わざわざサイドプロジェクトを立ち上げる必要をなくすためにリリースしました。
パワーユーザー向け機能
表からは分かりにくい、いくつかのポイントを紹介します。
Presets carry the full payload. これには、タイムアウトグループ、検証ルール、リダイレクト制限、およびカスタムheaderが含まれます。プリセットを保存すると、URLだけでなく、テスト済みのrequestのスナップショットが保存されます。endpoint間で安定したスモークテストのセットを維持する場合に便利です。
The cookie jar is per-session. これはブラウザ内に存在します。取得したcookieをサーバー側に永続化することはありません。クリーンな状態が必要な場合は、タブを強制リロードしてください。
The Raw tab and the form stay in sync. フォームフィールドは、Rawタブが表示するのと同じJSONをレンダリングします。Rawにペイロードを貼り付けると、フォームが再構築されます。そのため、同僚がチャットに動作するrequestを貼り付け、それをRawに貼り付けるだけで、フォームが自動的に入力されます。
Browser cookies are object-shaped, not header-shaped. Browser endpointに手動でcookieを送信する場合、各エントリは{name, value, domain?, path?, httpOnly?, secure?, sameSite?}を受け取ります。Playgroundは、jarがオンのときにこれらを正しく構築します。ご自身で作成する場合は、スキーマの一致が重要になります。
Outcomes show up in your activity feed. Playgroundがrequestを実行すると、キーに対する他の呼び出しと同様にカウントされます。アクティビティログには、適切な結果ラベル(success、client_error、application_error、rate_limit、service_error)とともに表示されます。不安定な本番環境の呼び出しを再現するのに便利です。Playgroundで再実行し、アクティビティログで見つけ、そのリンクをチームと共有できます。
今後の展望
Playgroundは、Dashboardを単に過去の実行結果を表示する以上のものにするための、大きな取り組みの第一歩です。requestログに見られるパターンが、次にリリースされる機能を形作ります。
現在ご利用中で、ドキュメントと一致しないフィールド、リダイレクト時に保持されなかったcookie、誤ってレンダリングされるresponseなど、違和感がある場合は、そのフィードバックを最優先で確認します。Dashboardはrequestを捉え、私たちはトレンドを捉えます。