Salesforce(Apex)でのREST API開発、クラス作成

woman working remotely on laptop with coffee cup in loft Apex
Photo by Anna Shvets on Pexels.com

この記事では、ApexでREST API のクラスとメソッドを書く方法を紹介します。

REST APIのクラスとメソッドの書き方

REST API のクラスとメソッドは以下のように書きます。

@RestResource(urlMapping='/sample/url')
global with sharing class ClassName {
    @HttpGet
    global static void doGet()(
    }
}

ポイント

  • アクセス修飾子は global
  • @RestResource(urlMapping=’/url’)をつけることでREST APIのクラスとすることができ、urlMapping=’/**’ の部分でURLを指定する
  • @HttpGetや、@HttpPost をつけることでGETやPOSTに対応したメソッドを作成することができる。

上記のREST APIを呼び出す場合は以下のようにします。

HTTPメソッド:GET
URL: https://組織ドメイン.salesforce.com/services/apexrest/sample/url (名前空間がある場合は https://組織ドメイン.salesforce.com/services/apexrest/名前空間/sample/url)

JSONを受け渡す部分の書き方

次に、JSONを渡すPOSTメソッドを見ていきます。

以下のJSONをリクエストボディとして渡すとします。

{
  "hoge": {
    "aaa": "AAA"
    "bbb": "BBB"
  }
}

この時、Apexメソッドは以下のように書きます。

@HttpPost
global static void doPost(Map<String,String> hoge)(
  String aaa = hoge.get("aaa");
}

このようにJSONは自動的にパースされ、メソッドの引数として使用可能です。

逆にJSONを返したい時は以下のようにします。

1. オブジェクトを返す

@HttpPost
global static void doPost(Map<String,String> hoge)(
  Account acc = [SELECT Name, Phone FROM Account LIMIT 1];
  return acc;
}

これだけで、レコード acc の Name, Phone 項目に関する情報がJSONに変換されてHTTPレスポンスで返ってきます。または、以下のようにします。

2. JSONを作成して返す

JSONGenerator json = JSON.createGenerator(false);
json.writeStartObject();
json.writeStringField('ccc', 'CCC');
json.writeEndObject();
String jsonBody = json.getAsString();
RestResponse res = RestContext.response;
res.addHeader('Content-Type', 'applecation/json');
res.statusCode = 201;
res.responseBody = Blob.valueOf(jsonBody);
return;

JSONを作成した後、RestResponse オブジェクトの responseBody にJSONを付加して返します。

まとめ

  • @RestResource(urlMapping=’/url’)をつけることでREST APIのクラスとすることができる
  • @HttpGetや、@HttpPost をつけることでGETやPOSTに対応したメソッドを作成できる
  • JSONは自動パースされてメソッドの引数として扱うことができる

コメント

タイトルとURLをコピーしました