RestRequest を使用した Apex REST のコードサンプル
次のサンプルでは、RestRequest オブジェクトを使用して、レコードに添付ファイルを追加する方法を示します。
cURL による認証についての詳細は、『REST API 開発者ガイド』の「クイックスタート」セクションを参照してください。このコードでは、バイナリファイルのデータは RestRequest オブジェクトに保存され、Apex サービスクラスはその RestRequest オブジェクトのバイナリデータにアクセスします。
- インスタンスに Apex クラスを作成します。そのためには、[設定] から、[クイック検索] ボックスに「Apex クラス」と入力し、[Apex クラス] を選択します。[新規] をクリックして、次のコードを新しいクラスに追加します。
1@RestResource(urlMapping='/CaseManagement/v1/*') 2global with sharing class CaseMgmtService 3{ 4 5 @HttpPost 6 global static String attachPic(){ 7 RestRequest req = RestContext.request; 8 RestResponse res = Restcontext.response; 9 Id caseId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1); 10 Blob picture = req.requestBody; 11 Attachment a = new Attachment (ParentId = caseId, 12 Body = picture, 13 ContentType = 'image/jpg', 14 Name = 'VehiclePicture'); 15 insert a; 16 return a.Id; 17 } 18} - コマンドラインウィンドウを開き、次の cURL コマンドを実行して、ケースに添付ファイルをアップロードします。 curl -H "Authorization: Bearer sessionId" -H "X-PrettyPrint: 1" -H "Content-Type: image/jpeg" --data-binary @file "https://instance.salesforce.com/services/apexrest/CaseManagement/v1/caseId"
- sessionId を、ログイン応答でメモした <sessionId> 要素に置き換えます。
- instance を <serverUrl> 要素に置き換えます。
- caseId を、添付ファイルを追加するケースの ID に置き換えます。
- file を、添付するファイルのパスとファイル��に置き換えます。
コマンドは次のようになります (sessionId は実際のセッション ID、yourInstance は実際のインスタンス名に置き換えます)。
1curl -H "Authorization: Bearer sessionId" 2-H "X-PrettyPrint: 1" -H "Content-Type: image/jpeg" --data-binary @c:\test\vehiclephoto1.jpg 3"https://yourInstance.salesforce.com/services/apexrest/CaseManagement/v1/500D0000003aCts"Apex クラスは、添付ファイル ID を含む次のような JSON 応答を返します。
1"00PD0000001y7BfMAI" - 添付ファイルと画像がケースに追加されたことを確認するには、 に移動し、[すべての進行中ケース] ビューを選択します。ケースをクリックし、添付ファイルの関連リストまでスクロールダウンします。作成した添付ファイルが表示されます。