SalesforceのRestResourceとは?SalesforceのRestResourceの概要や使い方をご紹介
IT・技術関連
更新日:2024.09.05


Salesforce RestResourceとは?
SalesforceのRestResourceとは、Salesforceで用意されているApexアノテーションの一つです。
SalesforceのApexアノテーションとは、メソッドやクラスの使用方法を変更するもので、宣言する際は@記号を付けて記述します。メソッドにApexアノテーションを宣言する場合は、メソッド定義やクラス定義の直前に記述します。
以下はApexアノテーションの一つである「Futureアノテーション」(@future)の宣言例です。対象のメソッドの直前に宣言します。Futureアノテーションはメソッドを非同期で実行させる場合に使用します。
global class MyClass {
@future
Public static void myMethod(String a)
{
//long-running Apex code
}
}
RestResourceアノテーション

RestResourceアノテーションの留意点
SalesforceのRestResourceアノテーションでは、以下のような留意点があります。 1. URLパスは「https://instance.salesforce.com/services/apexrest/{指定URL}」となります。 2. ワイルドカード文字「*」が使用できます。 3. URLパスでは、大文字と小文字が区別されます。 4. SalesforceでRestResourceアノテーションを使用する場合は、Apexクラスをグローバル定義しておく必要があります。URLパスのルール
RestResourceのURLパスの対応付けルールは次の通りです。 1. URLパスは、「/」で開始します。 2. 「*」がある場合、その前と後に「/」を付ける必要があります。ただし、「*」がURLパスの末尾である場合は後ろの「/」は不要です。 3. 常に完全一致が優先となります。 4. 完全一致がない場合は、ワイルドカード「*」で一致するすべてのパターンを検索して、一致した中の一番長い文字列が選択されます。 5. ワイルドカード「*」で一致するものが無い場合、HTTP応答状況コード404を返します。 6. 名前空間のあるクラスの場合はURLパスに名前空間が含まれます。 https://instance.salesforce.com/services/apexrest/{名前空間}/{指定URL}/RestResourceサンプルコード(1)
以下は、レコードの削除、取得、更新を行う3つのHTTP要求メソッドのサンプルコードです。@RestResource(urlMapping='/Account/*')
global with sharing class MyRestResource {
@HttpDelete
global static void doDelete() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
Account account = [SELECT Id FROM Account WHERE Id = :accountId];
delete account;
}
@HttpGet
global static Account doGet() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
Account result = [SELECT Id, Name, Phone, Website FROM Account WHERE Id = :accountId];
return result;
}
@HttpPost
global static String doPost(String name,
String phone, String website) {
Account account = new Account();
account.Name = name;
account.phone = phone;
account.website = website;
insert account;
return account.Id;
}
}
サンプルコードの説明
以下にサンプルコードの説明をします。 1. @RestResourceで指定URLに「/Account/*」を宣言しています。 2. @HttpDeleteを宣言することで、HTTP DELETE要求が送信されるとdoDeleteメソッドを実行します。 3. @HttpGetを宣言することで、HTTP GET要求が送信されるとdoGetメソッドを実行します。 4. @HttpPostを宣言することで、HTTP POST要求が送信されるとdoPostメソッドを実行します。doGetメソッドのコール
サンプルコードで、クライアントからdoGetメソッドをコールする場合は、コマンドラインウィンドウにコマンドを入力し実行します。 入力するのは次のコマンドです。curl -H "Authorization: Bearer sessionId"
"https://instance.salesforce.com/services/apexrest/Account/accountId"
「sessionId」には、ログイン時のsessionIdを指定します。
「instance」には、Server URLを指定します。
「accountId」には、取引先IDを指定します。
doGetメソッドをコールした後、Salesforceからは次のようなJSON応答が返ってきます。
{
"attributes" :
{
"type" : "Account",
"url" : "/services/data/v22.0/sobjects/Account/accountId"
},
"Id" : "accountId",
"Name" : "Acme"
}
RestResourceサンプルコード(2)
次のサンプルコードは、もう少しシンプルなものです。 以下のサンプルコードでは、HTTP GET要求時はパラメータから名前を取得して文字列を返し、HTTP POST要求時は引数から名前を取得して文字列を返します。@RestResource(urlMapping='/SayGoodbye/*')
global with sharing class SayGoodbyeApi {
@HttpGet
global static String doGet() {
RestRequest req = RestContext.request;
String name = req.params.get('name');
return 'Goodbye ' + name;
}
@HttpPost
global static String doPost(String name) {
return 'Goodbye ' + name;
}
}
サンプルコードのテストプログラム
以下はサンプルコードをテストするプログラム例です。 isTestアノテーションは、テスト用のメソッドやクラスを定義する場合に使用します。@isTest
private class SayGoodbyeApiTest {
/*** Postの確認を行う ***/
private static testMethod void doPostTest() {
String result;
Test.startTest();
result = SayGoodbyeApi.doPost('MyName');
Test.stopTest();
system.assertEquals(result, 'Goodbye MyName');
}
/*** Getの確認を行う ***/
private static testMethod void doGetTest() {
String result;
RestRequest req;
RestResponse res;
// リクエストの作成
req = new RestRequest();
req.httpMethod = 'GET';
req.requestURI = '/services/apexrequest/SayGoodbye/?name=MyName';
// レスポンスの作成
res = new RestResponse();
// コンテキストの設定
RestContext.request = req;
RestContext.response = res;
Test.startTest();
result = SayGoodbyeApi.doGet();
Test.stopTest();
system.assertEquals(result, 'Goodbye MyName');
}
}
RestResource 外部からの呼び出し
外部からメソッドをコールする場合は事前にSalesforceの認証を行ってから呼び出す必要があります。 Salesforceにログインし「設定」→「作成」→「アプリケーション」→「接続アプリケーション」で認証を行います。 項目「コンシューマ鍵」、「コンシューマの秘密」と、ログイン時の「ユーザ名」、「パスワード」で認証を行い、アクセストークンを受け取ります。受け取ったアクセストークンをHTTPヘッダに設定すれば、REST APIメソッドをコールすることが可能となります。SalesforceのRestResourceを活用しよう!

この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
ITエンジニアの派遣を利用したい企業様へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。