PR

【Salesforce】Apexで同期/非同期の外部コールアウト

eyecatch-development-s Salesforce
この記事は約2分で読めます。
記事内に広告が含まれています。

Salesforceで外部へのコールアウトを実装する際には、HttpRequestHttpクラスを使用します。

同期、非同期それぞれのコールアウトのApexコードの例を紹介します。

コード例

スポンサーリンク

同期コールアウトの場合

HttpCalloutSync.cls の実装をご参照ください。

HttpRequestHttpクラスで外部コールアウトを行なっています。

同期の場合は、特筆事項はないので実装例に従って書いてみてください。

非同期コールアウトの場合

HttpCalloutAsync.cls の実装をご参照ください。

この実装では、Queueable Apex を使用しています。

まずQueueableクラスを作成します。

そして、以下のようにQueueableジョブを実行します。

HttpCalloutAsync job = new HttpCalloutAsync();
System.enqueueJob(job);

非同期コールアウトではQueueable Apexを使用します。

非同期 Apex
非同期処理でより効率的に Apex コードを記述します。

※リンク先の Trailhead に記載があるように、future でも実現は可能です。

スポンサーリンク

Queueable Apexは非同期処理を行うための機能で、Queueableインターフェースを実装したクラス内でコールアウトを行います。

また、Queueable ApexはDatabase.AllowsCalloutsインターフェースも同時に実装することでコールアウトを可能にします。

なお、Queueable Apexにはガバナ制限があり、同一トランザクション中で同時に実行できるQueueableジョブは1つだけです。

また、1つのジョブ内でのコールアウトは最大100回までなので使用時にはご注意ください。

その他

コールアウトは Apex Test クラスの書き方も覚えておきましょう。

【Apex】Apex Test で外部コールアウトをテストする方法
知ってるんだけど忘れがちな、Apexでの外部コールアウトのテストクラスの実装の備忘録です。サンプルコード付きで概要を解説します。

また、コールアウトを伴う処理のよくあるエラーも事前に確認しておきましょう。

【Salesforce】「You have uncommitted work pending.」エラー
Salesforce の実装時の「You have uncommitted work pending.Please commit or rollback before calling out.」 とい...

コメント

タイトルとURLをコピーしました