この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

RestRequest クラス

System.RestRequest クラスを使用して、RESTful Apex メソッドで要求データにアクセスし、そのデータを渡します。

名前空間

System

使用方法

Apex RESTful Web サービスメソッドは、REST アノテーションの 1 つを使用して定義されます。Apex RESTful Web サービスについての詳細は「Apex クラスを REST Web サービスとして公開」を参照してください。

例: REST アノテーションが付加されたメソッドを含む Apex クラス

次の例では、Apex の Apex REST API の実装方法を示します。このクラスが公開する GET、DELETE、および POST の 3 つのメソッドはそれぞれ、異なる HTTP 要求を処理します。HTTP 要求を発行して、クライアントからアノテーションが付加されたこれらのメソッドをコールできます。
1@RestResource(urlMapping='/Account/*')
2global with sharing class MyRestResource {
3
4    @HttpDelete
5    global static void doDelete() {
6        RestRequest req = RestContext.request;
7        RestResponse res = RestContext.response;
8        String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
9        Account account = [SELECT Id FROM Account WHERE Id = :accountId];
10        delete account;
11    }
12  
13    @HttpGet
14    global static Account doGet() {
15        RestRequest req = RestContext.request;
16        RestResponse res = RestContext.response;
17        String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
18        Account result = [SELECT Id, Name, Phone, Website FROM Account WHERE Id = :accountId];
19        return result;
20    }
21  
22  @HttpPost
23    global static String doPost(String name,
24        String phone, String website) {
25        Account account = new Account();
26        account.Name = name;
27        account.phone = phone;
28        account.website = website;
29        insert account;
30        return account.Id;
31    }
32}

RestRequest のコンストラクター

RestRequest のコンストラクターは次のとおりです。

RestRequest()

System.RestRequest クラスの新しいインスタンスを作成します。

署名

public RestRequest()

RestRequest のプロパティ

RestRequest のプロパティは次のとおりです。

RestRequest List プロパティと Map プロパティは参照専用ですが、内容は参照・更新が可能です。変更するには、Collection メソッドを直接コールするか、前の表に示した、関連付けられた RestRequest メソッドを使用できます。

メモ

headers

要求が受け取るヘッダーを返します。

署名

public Map<String, String> headers {get; set;}

プロパティ値

型: Map<String, String>

httpMethod

サポートされる HTTP 要求メソッドの 1 つを返します。

署名

public String httpMethod {get; set;}

プロパティ値

型: String

返される値は次のとおりです。

  • DELETE
  • GET
  • HEAD
  • PATCH
  • POST
  • PUT

params

要求が受け取るパラメーターを返します。

署名

public Map <String, String> params {get; set;}

プロパティ値

型: Map<String, String>

remoteAddress

要求を行うクライアントの IP アドレスを返します。

署名

public String remoteAddress {get; set;}

プロパティ値

型: String

requestBody

リクエストボディを返すか、設定します。

署名

public Blob requestBody {get; set;}

プロパティ値

型: Blob

使用方法

Apex メソッドにパラメーターがない場合、Apex REST は HTTP リクエストボディを RestRequest.requestBody プロパティにコピーします。パラメーターがある場合、Apex REST はデータをそれらのパラメーターにデシリアライズしようとします。ただし、データは RestRequest.requestBody プロパティにはデシリアライズされません。

requestURI

HTTP 要求文字列内のホスト名の後の文字列をすべて返すか、設定します。

署名

public String requestURI {get; set;}

プロパティ値

型: String

たとえば、要求文字列が https://instance.salesforce.com/services/apexrest/Account/ の場合、requestURI/Account/ です。

resourcePath

要求の REST リソースパスを返します。

署名

public String resourcePath {get; set;}

プロパティ値

型: String

たとえば、Apex REST クラスが /MyResource/*urlMapping を定義している場合、resourcePath プロパティは /services/apexrest/MyResource/* を返します。

RestRequest のメソッド

RestRequest のメソッドは次のとおりです。すべてインスタンスメソッドです。

実行時に、ヘッダーまたはパラメーターは、対応するプロパティに自動的にデシリアライズされるため、通常 RestRequest オブジェクトに追加する必要はありません。次のメソッドは、Apex REST クラスをテストするユニットを対象とします。これらのメソッドを使用して、ヘッダーまたはパラメーター値を RestRequest オブジェクトに追加でき、REST メソッドコールを再作成する必要はありません。

メモ

addHeader(name, value)

Apex テストで要求ヘッダー対応付けにヘッダーを追加します。

署名

public Void addHeader(String name, String value)

パラメーター

name
型: String
value
型: String

戻り値

型: Void

使用方法

このメソッドは、Apex REST クラスのテストユニットを対象としています。

次のヘッダーは許可されていません。
  • Cookie
  • set-cookie
  • set-cookie2
  • content-length
  • authorization
これらのヘッダーのいずれかが使用された場合は Apex 例外が発生します。

addParameter(name, value)

Apex テストで要求パラメーター対応付けにパラメーターを追加します。

署名

public Void addParameter(String name, String value)

パラメーター

name
型: String
value
型: String

戻り値

型: Void

使用方法

このメソッドは、Apex REST クラスのテストユニットを対象としています。