APIエンドポイント
API platformでは、2種類のAPIエンドポイントを管理して公開できます。
レシピベースのエンドポイント
レシピベースのエンドポイントは、外部システムをAPIレシピに接続します。 APIレシピは、データの取得、処理、更新などのタスクを自動化する、トリガーとアクションで構成された内部ワークフローです。 レシピベースのエンドポイントは、APIレシピを外部アプリケーションに安全に公開し、大規模なDevOpsリソースを必要とせずに複雑なビジネスプロセスをサポートします。
プロキシベースのエンドポイント
プロキシベースのエンドポイントは、WorkatoのAPIゲートウェイを通じてAPIを安全に公開します。 これらのAPIプロキシは、1秒あたり最大10,000件のリクエストという大量のトラフィックを処理でき、外部API連携を一元化して保護するスケーラブルなソリューションを提供します。
両方のタイプのエンドポイントをAPIコレクションに整理して、関連するAPIをグループ化し、一貫した設定を維持し、アクセス管理を簡素化できます。
エンドポイントタイプ
コレクション内でエンドポイントタイプを混在させることはできません。 APIレシピコレクションにはレシピベースのエンドポイントのみを含めることができ、APIプロキシコレクションにはプロキシベースのエンドポイントのみを含めることができます。
APIエンドポイントのセットアップと管理
APIエンドポイントのセットアップ、管理、テストについては、次のガイドを参照してください。
- 新しいエンドポイントを設定する: 要件に応じて、レシピベースまたはプロキシベースのエンドポイントを選択します。 特定のエンドポイントタイプに応じた設定手順に従ってください。
- パステンプレートでパスパラメーターを定義する: 動的パスパラメーターを使用して、エンドポイントURLに柔軟性を追加します。
- エンドポイントパスのガイドラインに従う: 各エンドポイントのパスが一意で、一貫性があり、理解しやすいことを確認します。
- エンドポイントを有効化または無効化する: 各エンドポイントを有効または無効に設定して、アクセスを制御します。
- エンドポイントをテストする: 本番稼働前に機能を検証します。 レシピエンドポイントには有効なレシピが必要で、プロキシエンドポイントはすぐにテストできます。
- キャッシュを有効にする: パフォーマンス最適化のため、GETリクエストでキャッシュを有効にして、重複する呼び出しを減らし、応答時間を短縮します。
新しいエンドポイントを設定する
APIエンドポイントを作成して設定するには、各エンドポイントタイプに関連するガイドを参照してください。
APIエンドポイントタイプ
APIプロキシおよびレシピエンドポイントの詳細、ならびに適切なオプションを選択するためのガイダンスについては、APIコレクションタイプを参照してください。
スキーマ検証
レシピベースのエンドポイントでは、受信リクエストを事前定義済みのスキーマに対して検証することで、データ整合性を適用できます。 スキーマ検証の詳細をご確認ください。
エンドポイントの有効化または無効化
エンドポイントは有効または無効のいずれかにできます。
| 状態 | 説明 |
|---|---|
| アクティブ | 有効なエンドポイントはAPIリクエストを通じて呼び出すことができます。 レシピベースのエンドポイントでは、エンドポイントを有効に設定する前に、関連付けられたレシピが実行中である必要があります。 |
| 非アクティブ | 無効なエンドポイントにはリモートからアクセスできず、APIゲートウェイはすべての呼び出しを拒否します。 ただし、無効なエンドポイントに関連付けられたレシピはバックグラウンドで引き続き実行されます。 |
エンドポイント設定ページのDetailsタブでActivate endpointまたはDeactivate endpointボタンをクリックすると、APIリクエストを通じてエンドポイントを呼び出せるかどうかを制御できます。 新しく作成または追加されたエンドポイントは、デフォルトで無効です。
コレクション内のAPIプロキシエンドポイントを有効化
エンドポイントの削除
エンドポイントを削除すると、コレクションから削除され、そのコレクションを通じて以前にアクセス権を付与されていたクライアントからアクセスできなくなります。
レシピエンドポイントとプロキシエンドポイントのどちらにも有効/無効の状態がありますが、有効化の要件は異なります。
- レシピエンドポイントは、テストまたはAPIリクエストを通じてアクセスする前に有効化する必要があります。
- プロキシエンドポイントは有効化せずにテストできますが、外部クライアントが呼び出すには有効化する必要があります。
パステンプレート
パステンプレートを使用すると、パスパラメーターを使ってURLパス内のリソース識別子を指定できます。 APIリクエストが行われると、パスパラメーター内の値は次のいずれかになります。
- APIレシピ内の関連するデータピルに渡されます(レシピベースのエンドポイントの場合)。
- ターゲットURLに転送されます(プロキシベースのエンドポイントの場合)。
機能の提供状況
パステンプレートは、APIプレフィックスが有効になっているコレクションでのみ使用できます。
レシピベースのエンドポイントを使用する場合は、まずNew API requestトリガーでデータピルを設定してから、エンドポイントパスパラメーターを設定することをお勧めします。
中かっこ{}を使用して、URLの一部をパスパラメーターとしてマークします。 例: users/{salesforce_id}
URLパステンプレート
エンドポイントパスのガイドライン
プロキシエンドポイントパスおよびレシピエンドポイントパスを設定するときは、次のガイドラインを使用してください。
- エンドポイントパスには、
/で区切られた1つ以上のセグメントを含めます。- たとえば、ユーザーのエンドポイントを指定するには
users/{user_id}を使用します。
- たとえば、ユーザーのエンドポイントを指定するには
- 各セグメントが静的パス(
users)またはパラメーター({user_id})のいずれかであることを確認します。 - データピルの命名規則に一致するように、パスパラメーター名には英数字または
_文字を使用します。 - エンドポイントパス内で同じ名前のパラメーターを複数使用しないでください。
- 新規または更新済みのエンドポイントパスは、意図した大文字と小文字で入力します。大文字と小文字は区別され、そのまま保持されます。 たとえば、
/Path123/はPath123/のままです。 - 各エンドポイントに一意のメソッドとパスの組み合わせがあることを確認します。
- たとえば、同じコレクション内に
/user/{ID}が存在する場合、HTTPメソッドが異なる場合を除き、/user/{id}を作成しないでください。 - 同様に、同じコレクション内に
/user/{user_id}が存在する場合、HTTPメソッドが異なる場合を除き、/user/{id}を作成しないでください。- パスマッチングは左から右に実行され、静的セグメントがパラメーター化されたセグメントより優先されます。
- たとえば、同じコレクション内に
警告
レシピまたはAPIクライアントで使用されているエンドポイントを変更する場合、エラーを防ぐために、対応するレシピまたはスクリプトの更新が必要になることがあります。
例
APIエンドポイントにsalesforce_idが必要な場合、パスパラメーターを使用してSalesforce id(5003000000D8cuI)を指定できます。
curl -X PUT 'https://apim.workato.com/api-collection/users/5003000000D8cuI' \
-d '{"Email": "[email protected]","displayName": "Matt Jones","BillingCity": "San Francisco"}'レシピトリガーは次の出力を返します。
{
"request": {
"salesforce_id" : "5003000000D8cuI",
"Email": "[email protected]",
"displayName": "Matt Jones",
"BillingCity": "San Francisco"
},
"Context": {+}
}重複するキー
同じ名前空間がパスパラメーター、クエリパラメーター、またはリクエスト本文に存在する場合、パスパラメーター値が優先されます。
次のAPIリクエストを送信すると、salesforce_idデータピルは、リクエスト本文で指定された値(068D00000000pgOIAQ)ではなく、パスパラメーターの値(5003000000D8cuI)を取ります。
curl -X PUT 'https://apim.workato.com/api-collection/users/5003000000D8cuI' \
-d '{"salesforce_id" : "068D00000000pgOIAQ","Email": "[email protected]","displayName": "Matt Jones","BillingCity": "San Francisco"}'Last updated: