SalesforceでのPostmanの使い方について実践しながら紹介

この記事でわかること
Postmanとは?
他のシステムとの連携エラーやAPIの検証などでAPI接続ツールとしてPostmanは利用されています。
あまりよく知らずに使用している人も多いですが、その使い方も実践を交えながら解説していきます。
PostmanはAPI開発のためのツールです
Postman(ポストマン)はPostman社が提供しているAPI開発コラボレーションプラットフォームです。
使い方も簡単で、リクエストから認証、テストなどの機能が搭載されていてAPI開発を素早く正確に実現できるので作業効率が飛躍的に上がります。
特に便利なのが開発したAPIをテストできる機能です。APIのURLを入力してそこに入るパラメーターを設定するだけです。
手動でのテストと比べると使い方も簡単で、GETやPOSTのテストができます。APIおよびアプリケーション開発に貢献できるプラットフォームです。
Postmanのプランは4つあるのでプロジェクトの規模に合ったものを選びましょう。
(2021年1月時点)
規模の小さいチームや個人の場合はFreeプランで十分でしょう。
ただし、SSOを使用してユーザーを認証、アクセスや権限を承認したり、組織に合わせたカスタム契約が出来ないなど、プランによって異なるので出来ないことも合わせて公式サイトをチェックしましょう。
Postmanのメリット
Postmanを使った場合のメリットについて紹介します。
HTMLのリクエストを完全に制限することが可能です。ファイルのアップロード制限もなく、ヘッダーとパラメーターを設定し、任意のコンテンツタイプを使用できます。
他にも複数の環境切り替えが可能です。環境を切り替えると、変数がその環境固有の値に更新されます。Freeプランを使用している場合はワークスペースをインポート、エクスポートすることでリクエストを共同で編集できます。
JavaScriptを使用して実行後のスクリプトを作成することにより、処理を自動化できるので環境変数の設定に使用できます。
プロジェクト全体でAPIリクエストを迅速に設計して再利用するのに役立ちますし、もう一度使用可能なリクエストが増えたらオープンソースのSalesforceAPIコレクションを作成しましょう。
スクリプト
リクエストを送信する前とレスポンスを受信した後にスクリプトは実行されます。
以下の順で実行されます。
REQUEST
(pre-request script)
↓
REQUEST
↓
RESPONSE
↓
REQUEST
(test script)
コードは以下のようになります。
1 2 3 4 5 6 |
pm.test('Success!' function() { pm.response.to_have.status(200); }) pm.Variables.get('myVar'); |
変数
変数はデータの記号表現で、手動で入力しなくても値にアクセスできます。
複数の場所で同じ値を使用している場合など、詳細の一部を抽象化することにより、リクエストをより柔軟に読みやすくします。
Postmanは5つの変数の種類があるのでタスクによって使い分けしましょう。
変数の内容は以下の通りです。
global(グローバル)変数は、コレクション、リクエスト、テストスクリプトや環境間でデータにアクセスできます。グローバル変数はワークスペース全体で使用できるので扱いには注意してください。
collection(コレクション)変数はコレクション内のリクエスト全体で使用できます。環境に依存しないようになっています。
environment(環境)変数はローカル環境、テスト、本番など様々な環境に合わせて処理を調整できます。一度にアクティブにできる環境は一つなので覚えておきましょう。
data(データ)変数は外部のCSVファイルとJSONファイルから取得されます。NewmanまたはCollectionRunnerを介してコレクションを実行する時に使用できるデータセットを定義します。
local(ローカル)変数は一時的に利用するもので、リクエストスクリプトでのみアクセスできるようになっています。
こちらの5つの関数が用意されていて、各変数毎に参照できるスコープが異なっています。
変数名が同じものを登録している場合はスコープが狭い変数値に設定されます。
SalesforceでのPostmanの使い方
Salesforceは、沢山のサードパーティーシステムを利用できるようにする豊富なAPIセットを公開しています。これらのAPIは全て完全に文書化されているので、特定の組織や複数の組織で素早くSalesforceAPIを簡単に探索及びテストしたい場合にPostmanが活躍します。
タイトルにもあるようにここで実践するのは「PostmanのAPIリクエストをSalesforceの環境ごとに切り替えるように作る」なので、変数のみ使用してSalesforceのログイン環境依存情報を切り替えていきます。
では早速、SalesforceでのPostmanの使い方を紹介していきます。
Salesforceのログイン情報を環境変数に設定する
Salesforceの環境ごとにユーザーIDとパスワードの切り替えができるように変数を定義します。「Upgrade」の左隣にあるアイコンの一番左端の歯車のマークを押して、環境変数管理の画面である[MANAGE ENVIRONMENTS]画面が表示されます。
画面端に表示されている[Add]から、[ADD ENVIRONMENTS]画面に遷移するので、下記の表に記載されている変数設定を画面に設定します。
項目とPW項目の[INITIAL VALUE]項目に自分のSalesforceのユーザーIDとパスワードを入力し保存します。
変数名 | 説明 | 初期設定 |
---|---|---|
ENV | 本版=login or sandbox=test | login or test |
UID | SalesforceユーザーID | your id |
PW | パスワード | ****** |
SID | アクセストークン | ブランク |
URL | インスタンスURL | ブランク |
ログインリクエストの作成をする
ログインエンドポイントのSOAPを使って実行していきます。
HTTPメソッド : POST
送信URL : https://{{ENV}}.salesforce.com/service/Soap/u/45.0
{{ENV}}上記で設定をした環境変数の値が、実行時に設定されます。
Content-Typeにtext/xml;charset-utf8を入力して、その下のSOAPActionはloginと設定します。
それが完了したらリクエストで送信するBodyを設定していきます。
[Body]タブを選択し、データの種類を[raw]を選択して下記のソースを記述します。
環境変数で設定したSalesforceのユーザーIDとパスワードが、XMLの{{UID}}と{{PW}}の変数に設定されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version=""1.0"" encoding=""UTF-8""?> <env:Envelope xmlns:env=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance\""> <env:Body> <m:login xmlns:m=""urn:partner.soap.sforce.com"" xmlns:sobj=""urn:sobject.partner.soap.sforce.com""> <m:username>{{UID}}</m:username> <m:password>{{PW}}</m:password> </m:login> </env:Body> </env:Envelope> |
次は、リクエスト実行後に、レスポンスのBodyからインスタンス変数とアクセストークンを環境変数に設定するのでスクリプトを設定していきます。
[Test]タブを選択し、レスポンス受信後に設定するスクリプトを設定するので以下のコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var ok = responseCode.code === 200; tests[""Successful request""] = ok; if(ok) { var json0bject = xml2Json(responseBody); var sid = jsonObject[""soapenv:Envelope""][""soapenv:Body""].loginResponse.result.sessionId; var serverurl = jsonObject[""soapenv:Envelope""][""soapenv:Body""].loginResponse.result.serverUrl.match(/^[httpsfile]+:\/{2,3}([0-9a-z\.\-:]+?):?[0-9]*?\//i)[0].slice(0,-1); console.log(sid); console.log(serverurl); pm.environment.set(""SID"",sid); pm.environment.set(""URL"",serverurl); } |
これで環境依存の値を環境変数に設定する処理は設定完了です。
APIリクエストの作成をする
ログインリクエストの設定が完了したので、実際に環境変数を使って切り替えができるリクエストを説明していきます。
先ほどのログインリクエストと同じ手順で、APIの一覧情報を取得するAPIリクエストを作成して下さい。エンドポイント、HTTPメソッドの設定は以下の通りです。
HTTPメソッド:GET
エンドポイント:{{URL}}/service/data/data/v.45.0/
{{URL}}にログインのレスポンスが受信設定をした際に環境変数の値が実行時に設定されます。
AuthorizationType:BearerToken
TOKEN:{{SID}}
{{SID}}環境変数の値が設定されたものが、ログインのレスポンス受信の実行時に設定されます。
以上で設定は完了です。念のため動作チェックも行いましょう。
SalesforceでPostmanを活用しよう
今回はSalesforceで使うと便利なPostmanの概要と使い方について簡単な実践を交えて紹介しました。Postmanを使うとAPIの開発効率が上がるのでぜひ活用してみましょう。