コンテンツの種類
Infobip API は、いくつかの コンテンツ タイプ (opens in a new tab) をサポートしています。ほとんどの API 要求と応答は、アプリケーション/json
または アプリケーション/xml
のいずれかになります。JSON
形式 (opens in a new tab) と XML
形式 (opens in a new tab) の詳細については、少し時間を取ってください。
メール送信などの一部の API エンドポイントでは multipart/form-data が使用されるため、詳細については、ターゲットエンドポイントの専用ドキュメントページを確認することをお勧めします。
response Content-Type の指定
目的の API 応答コンテンツ タイプは、次の 2 つの方法のいずれかで指定できます。
Accept ヘッダー
1 つ目は、標準の Accept (opens in a new tab) HTTP ヘッダーを使用する方法です。
リクエスト例:
GET /sms/1/reports HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Accept: application/json
応答例:
{
"results": []
}
パスの拡張
なんらかの理由で API 呼び出しの Accept ヘッダーを変更できない場合は、特定のコンテンツ タイプを要求する別の方法があります。これを行うには、選択したコンテンツタイプに対応する拡張子を持つ要求パスを追加します。
コンテンツの種類 | パスの拡張 |
---|---|
application/json | .json |
application/xml | .xml |
次の要求:
GET /sms/1/reports.xml HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
は、次のようなXML
形式の応答を返します。
request Content-Type の指定
要求本文データのコンテンツの種類は、要求の Content-Type ヘッダーで指定する必要があります。特に指定しない場合、API エンドポイントは application/json
または application/xml
タイプのコンテンツを受け入れます。
HTTP メッセージ本文データを含む API 要求の Content-Type ヘッダーを指定する必要があります。これらは通常、POST および PUT HTTP メソッドを使用する要求です。
たとえば、SMS メッセージを JSON
または XML
で書式設定できますが、それに応じて Content-Type ヘッダーに入力する必要があります。
POST /sms/1/text/single HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
{
"to":"41793026727",
"text":"Test SMS."
}
POST /sms/1/text/single HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/xml
41793026727
Test SMS.
最後に、API 応答は既定で送信されたコンテンツと一致することに注意してください。ただし、要求本文データの送信に使用されたコンテンツ タイプとは異なるコンテンツ タイプで API 応答を受信する場合は、Accept ヘッダーを明示的に設定することで、この動作を変更できます。これは、電子メールを multipart/form-data
形式で送信する場合に便利で、応答には別のコンテンツタイプが望ましいです。
POST /email/1/send HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Accept: application/json
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="from"
Jane Doe
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="to"
john.smith@somedomain.com
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="subject"
Mail subject text
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="text"
Mail body text
------WebKitFormBoundary7MA4YWxkTrZu0gW--
上記の要求は、JSON
形式の応答を生成します。
Bad Request エラー
API は、一般的な間違いを区別し、適切な方法で対応しようとします。たとえば、HTTP メッセージ本文データに問題がある場合、API は HTTP ステータス 400
(Bad request) で応答し、応答本文は次のようになります。
{
"requestError": {
"serviceException": {
"messageId": "BAD_REQUEST",
"text": "Bad request"
}
}
}
BAD_REQUEST
Bad request
この応答にはいくつかの原因が考えられますが、一般的な原因をいくつか紹介します。
- content-type ヘッダーがありません
- Content-type が送信された本文データと一致しません
- 送信された本文データが JSON または XML 形式に準拠していない
ただし、API 要求本文データ内の認識されないパラメーターは、要求が適切に書式設定されている限り、要求が自動的に失敗することなく無視されます。このため、対象の API エンドポイントの専用ドキュメントと、そこで定義されている受け入れられるパラメーターのリストを参照することをお勧めします。
応答の解析
API応答を解析するときは、JSON (opens in a new tab) または XML (opens in a new tab) 仕様に準拠していることを確認してください。それぞれに具体的な詳細が関連付けられています。たとえば、JSON
形式では、オブジェクト内の名前と値のペアの順序は保証されません。したがって、JSON
API 応答を解析するときにプロパティの順序に依存しないでください。
選択した言語に応じて、JSON / XML
解析のネイティブサポートが組み込まれているか、それを処理する外部ライブラリを使用する場合があります。