記事を書こうと思ったきっかけ
システムに関わる仕事をしていれば、「API」という言葉をよく聞きます。どんなものだろうと思って、ネットで調べると「サービスが外部と情報をやり取りする窓口」的な回答が基本的には多く、「ふ〜ん、そうなんだ」という感想止まりになってしまい、忙しい実務の中では色々なサービスがAPI連携できるできないの調査で終わってしまうことが続いていました。もっとAPIの正体・実態について具体的に知りたい!と思ったことがこの記事を書いたきっかけです。
今回APIを理解するためにやったこと
今回はお馴染みのSalesforceの開発環境にAPIを用いたいくつかの方法で通信し、取引先レコードを1件作ります。(方法毎に記事を出していきます。)
「APIが公開されている」とは
さて、よく「APIが公開されている/されていない」という使われ方をするので、まずSalesforceが公開しているAPIってどんなものなんだっけなとAPIリファレンスを確認しました。
このページはSalesforceのオブジェクトにレコードを1件作るときの説明です。どこに(URL)、どのメソッドで(POST)、どんなJSONを送るか、成功したら何が返るか(新しいレコードのID)、失敗したときのエラー例まで載っています。今回欲しい「取引先を作る」も、このページの例そのものです。
基本的には、「APIを公開している」というのは、こういったシステムに対して送る通信方式と何が返ってくるかが公開されている状態と考えて大丈夫です。お使いのサービスや気になるサービスに関しても調査してみてください。
どこのURLに、どのメソッドで
システムにどんな通信をしたいか(今回で言えばデータを送りたい)を決めると、一意に、どこのURLにどのHTTPメソッドで通信するかが決まります。
ここで言うメソッドは、HTTPという通信の約束で決まっている、データの操作の種類です。よく使うのは次の4つ(正確には更新が PATCH と PUT に分かれるので5つ)です。
| メソッド | 何をするか |
|---|---|
| GET | 読む |
| POST | 作る |
| PATCH / PUT | 更新する |
| DELETE | 消す |
これ以外にもありますが、レコードを扱う話ではこのあたりで足ります。
今回はデータをSalesforceに送る動作ですが、それはメソッドのPOSTが担っています。
POST https://{My Domain}/services/data/vXX.X/sobjects/Account/
このページで言うと、Example for creating a new Account がこの1行です。
- 例: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm
- 定義: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_basic_info_post.htm
定義のページでは、送る形式(Formats)に JSON と XML が書いてあります。今回は JSON で送ります。ヘッダの Content-Type: application/json が「JSONで送る」という宣言です。
次の記事
このあと、同じ「取引先を1件作る」を、やり方を変えて書いていきます。(記事の単位は変更の可能性があります)
- コマンドラインからレコードを作る(Salesforce CLI / ターミナルからPythonを使って の2方式)
- Python ファイルと HTML ファイルを使ってレコードを作る
- Salesforce上で外部クライアントアプリケーションを使ってレコードを作る
