LWCからREST経由で別のSalesforce組織を呼び出す
頂点なしで、つまりJavascript(fetch、xhr)を使用してLWCから残りのapiコールアウトを(同じsalesforce組織に)作成したいと思います。コールアウトを行うための名前付き資格情報を作成しました。そして、ユーザーがログインしていないLWCからファイルをアップロードしようとしています。ヒープサイズの問題のため、apexを使用できません。
それで、名前付き資格情報を使用してRESTエンドポイントにapex httpコールアウトを作成するように、ユーザー資格情報やトークンなしでLWC JSからRESTAPIエンドポイントを呼び出す方法はありますか?
回答
それで、名前付き資格情報を使用してRESTエンドポイントにapex httpコールアウトを作成するように、ユーザー資格情報やトークンなしでLWC JSからRESTAPIエンドポイントを呼び出す方法はありますか?
番号
apexでは、以下のコードスニペットに示すように、名前付きの資格情報のコールアウトを作成します。
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_Named_Credential/some_path');
これはsetEndpoint
、HttpRequest
オブジェクトのメソッドが、指定された資格情報を識別し、リクエストとともに認証トークンを渡す責任を負うことを意味します。
Fetch
&XmlHttpRequest
はJavascriptベースのWebAPIであり、Salesforceによって管理されていません。つまり、これらを使用する場合は、認証パラメータを自分で処理/渡す必要があります。さらに、これらのAPIのいずれかを使用してクライアント側のWebリクエストを行う場合、コードはSalesforceサーバー(指定された資格情報を維持する)にまったくヒットしません。
注:apexコードを呼び出してWebリクエストを作成する汎用LWCユーティリティを作成できますが、fetchまたはxhrを使用する必要はありません。
特にSalesforceへのコールアウトを行うには、トークンが必要です。
これで、以下の方法でトークンを保存/ JSに渡すことができます(頂点の方法が少ない/ない)-
- Apexから渡す-単純な文字列を簡単に渡すことができます。トレイルヘッドリンク
- VFページからLWCコンポーネントにパラメータとして渡すことができます-例:
<c:component-name sessionId ='{! sessionId }' />
- CookieからセッションIDをフェッチすることができます-sidはtoken(sessionId)に他なりません。
- 呼び出し元コンポーネントから暗号化されたブラウザに保存できます(ブラウザのストレージAPIを使用)-推奨されません。