Sim

API

APIブロックを使用すると、HTTPリクエストを通じてAPIエンドポイントを使用して、ワークフローを外部サービスに接続できます。GET、POST、PUT、DELETE、PATCHなどの様々なメソッドをサポートしており、事実上あらゆるAPIエンドポイントと対話することができます。

APIブロック

概要

APIブロックでは以下のことが可能です:

外部サービスへの接続: REST APIやWebサービスへのHTTPリクエストを行う

データの送受信: レスポンスの処理や外部ソースからのデータ変換

サードパーティプラットフォームの統合: Stripe、Slack、またはカスタムAPIなどのサービスとの連携

認証の処理: BearerトークンやAPIキーなど、様々な認証方法をサポート

動作の仕組み

APIブロックは構造化されたアプローチでHTTPリクエストを処理します:

  1. リクエストの設定 - URL、メソッド、ヘッダー、ボディパラメータを設定
  2. リクエストの実行 - 指定されたエンドポイントにHTTPリクエストを送信
  3. レスポンスの処理 - レスポンスデータ、ステータスコード、ヘッダーの処理
  4. エラー処理 - タイムアウト、リトライ、エラー状態の管理

設定オプション

URL

APIリクエスト用のエンドポイントURL。以下のいずれかになります:

  • ブロックに直接入力された静的URL
  • 別のブロックの出力から接続された動的URL
  • パスパラメータを含むURL

メソッド

リクエストに使用するHTTPメソッドを選択します:

  • GET: サーバーからデータを取得
  • POST: リソースを作成するためにサーバーにデータを送信
  • PUT: サーバー上の既存のリソースを更新
  • DELETE: サーバーからリソースを削除
  • PATCH: 既存のリソースを部分的に更新

クエリパラメータ

URLにクエリパラメータとして追加されるキーと値のペアを定義します。例えば:

Key: apiKey
Value: your_api_key_here

Key: limit
Value: 10

これらはURLに ?apiKey=your_api_key_here&limit=10 として追加されます。

ヘッダー

リクエスト用のHTTPヘッダーを設定します。一般的なヘッダーには以下が含まれます:

Key: Content-Type
Value: application/json

Key: Authorization
Value: Bearer your_token_here

リクエストボディ

リクエストボディをサポートするメソッド(POST、PUT、PATCH)では、送信するデータを定義できます。ボディは以下のいずれかです:

  • ブロックに直接入力されたJSONデータ
  • 別のブロックの出力から接続されたデータ
  • ワークフロー実行中に動的に生成されたデータ

結果へのアクセス

APIリクエストが完了すると、以下の出力にアクセスできます:

  • <api.data>: APIからのレスポンスボディデータ
  • <api.status>: HTTPステータスコード(200、404、500など)
  • <api.headers>: サーバーからのレスポンスヘッダー
  • <api.error>: リクエストが失敗した場合のエラー詳細

高度な機能

動的URL構築

前のブロックからの変数を使用して動的にURLを構築します:

// In a Function block before the API
const userId = <start.userId>;
const apiUrl = `https://api.example.com/users/${userId}/profile`;

リクエストの再試行

APIブロックは自動的に以下を処理します:

  • 指数バックオフによるネットワークタイムアウト
  • レート制限レスポンス(429ステータスコード)
  • 再試行ロジックによるサーバーエラー(5xxステータスコード)
  • 再接続試行による接続失敗

レスポンス検証

処理前にAPIレスポンスを検証します:

// In a Function block after the API
if (<api.status> === 200) {
  const data = <api.data>;
  // Process successful response
} else {
  // Handle error response
  console.error(`API Error: ${<api.status>}`);
}

入力と出力

  • URL: リクエストを送信するエンドポイント

  • メソッド: HTTPメソッド(GET、POST、PUT、DELETE、PATCH)

  • クエリパラメータ: URLパラメータのキーと値のペア

  • ヘッダー: 認証とコンテンツタイプのHTTPヘッダー

  • ボディ: POST/PUT/PATCHメソッド用のリクエストペイロード

  • api.data: API呼び出しからのレスポンスボディデータ

  • api.status: サーバーから返されたHTTPステータスコード

  • api.headers: サーバーからのレスポンスヘッダー

  • api.error: リクエストが失敗した場合のエラー詳細

  • レスポンスデータ: 主要なAPIレスポンスコンテンツ

  • ステータス情報: HTTPステータスとエラー詳細

  • アクセス: API呼び出し後のブロックで利用可能

使用例

ユーザープロファイルデータの取得

シナリオ: 外部サービスからユーザー情報を取得する

  1. ファンクションブロックが入力からユーザーIDを構築
  2. APIブロックがGET /users/{id}エンドポイントを呼び出す
  3. ファンクションブロックがユーザーデータを処理・整形
  4. レスポンスブロックが整形されたプロファイルを返す

決済処理

シナリオ: Stripe APIを通じて決済を処理する

  1. ファンクションブロックが決済データを検証
  2. APIブロックがStripeを通じて決済インテントを作成
  3. 条件ブロックが決済の成功/失敗を処理
  4. Supabaseブロックがデータベース内の注文ステータスを更新

ベストプラクティス

  • 機密データには環境変数を使用する: APIキーや認証情報をハードコードしないでください
  • エラーを適切に処理する: 失敗したリクエストに対してエラー処理ロジックを接続してください
  • レスポンスを検証する: データを処理する前にステータスコードとレスポンス形式を確認してください
  • レート制限を尊重する: APIのレート制限に注意し、適切なスロットリングを実装してください
API