IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > SalesforceのRestResourceとは?SalesforceのRestResourceの概要や使い方をご紹介

SalesforceのRestResourceとは?SalesforceのRestResourceの概要や使い方をご紹介

IT・技術関連 更新日:2024.09.05
エンジニア採用
SalesforceのRestResourceとは?SalesforceのRestResourceの概要や使い方をご紹介

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のApexクラスをRESTリソースとして公開するためのものです。 RestResourceアノテーションを使用すれば、REST APIでApexクラスの処理を実行することが可能になります。実際にREST APIからApexクラスの処理を実行する場合、以下のようなパスになります。 https://instance.salesforce.com/services/apexrest/{指定URL}/ 例えば、RestResourceアノテーションで、「@RestResource(urlMapping=’/Account/*’)」と宣言した場合、以下のようなパスになります。 https://instance.salesforce.com/services/apexrest/Account/

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を活用しよう!

今回は、SalesforceのRestResourceアノテーションについて説明しました。 RestResourceアノテーションを使用すれば、外部からApexクラスの処理を呼び出すことが可能となります。ぜひ理解して活用できるようにしておきましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア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月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ