Salesforce開発でREST APIなどを使った他システム連携について勉強したい場合は、先に他システムを構築する方法を覚える必要があると思います。そんなときはHerokuとRuby on Railsを使うと簡単に環境を用意できます。
Ruby on RailsでBackend用の環境を準備する方法は次の記事でまとめてあります。
今回はこれをHerokuにデプロイしてAPI連携を試してみようと思います。
はじめに
rails sコマンドとcurlコマンドをつかってローカル環境で値を取得できることを確認しておきます。
Herokuにデプロイ
heroku createコマンドとgit push heroku masterコマンドをつかってHerokuにデプロイします。上記記事で試した時は、ionicアプリ用のagendaフォルダとBackend用のagenda_backendフォルダを用意していますが、Herokuにデプロイするのはagenda_backendフォルダの方だけです。
もし次のエラーが発生した場合は、git initコマンドで解決すると思います。
Push rejected, no Cedar-supported app detected
あとデプロイ後に次のコマンドを実行する必要があります。
$ heroku run rake db:migrate
デプロイするとheroku openコマンドでHerokuアプリにアクセスできます。画面を用意してないのでエラー画面が表示されますが、これで準備完了です。
Herokuにテストデータを作成する
テストデータを作成ですが、登録画面は用意していないのでターミナルからコマンド実行で登録していきます。
Heroku環境でRailsコンソールを実行するには次のコマンドを使います。
heroku run rails console
あとはこのコマンドを実行してHerokuにデータを登録します。
$ Person.create(name: 'Laura', phone: '1800-3137977') $ Person.create(name: 'Jeniffer', phone: '1800-123456') $ Person.create(name: 'Tom', phone: '1800-654321')
ローカル環境と同じようにcurlコマンドで確認したい場合は、次の感じになります。
curl -X GET 'https://tyoshikawa1106-rails-backend.herokuapp.com/api/people'
これでHeroku側の準備が完了しました。
apigeeで確認してみる
Heroku側の準備ができたのであとはSalesforce組織からREST APIを使ってみるだけなのですが、そのまえにapigeeのサイトで動作確認してみます。apigeeは簡単にAPI実行を試すことができるサイトです。
ログイン後にconsoleタブを選択すると実行画面を表示できます。あとはこんな感じです。
無事にHerokuに登録したデータを取得できました。
SalesforceからのREST APIを実行
Salesforceから外部サイトに対してAPI実行を行う場合は、リモートサイトの設定が必要です。
ApexでのREST API実行は開発者コンソールで簡単に実行できます。
Http http = new Http(); HttpRequest req = new HttpRequest(); req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId()); req.setHeader('Content-Type', 'application/json'); req.setEndpoint('https://tyoshikawa1106-rails-backend.herokuapp.com/api/people'); req.setMethod('GET'); HttpResponse res = http.send(req); System.debug(res); String result = res.getBody(); System.debug(result);
無事にHerokuのデータ取得を確認できました。
これでSalesforceから外部サイトにREST APIを実行する方法について確認できました。Herokuはこんな感じでBackendアプリを動かすのにも利用できるみたいです。実際のアプリ開発では認証系処理を用意したりといったことも必要になると思うのですが、勉強用の環境を用意したいだけならひとまずこれで大丈夫そうです。