RestRequest クラス
名前空間
使用方法
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 のプロパティは次のとおりです。
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/* を返します。