3 APIの呼び出し方法
Mercury Cloud OpenAPIの呼び出し方法について記載しています。
3.1 ベースURL
基本サービスエンドポイントはこのような記述です。
https://domain.com/openapi/face/v1
Mercury Cloud APIはデータプライバシーを確保するために、HTTPS経由でのAPIのみ提供しています。
domain.com
は、お客様のサービス地域によって異なる場合があります。この情報に関しては、「サービス開始のご連絡」メールで提供されています。
3.2 共通パラメータ
各APIの呼び出しには、いくつかの共通パラメーター、HTTPメソッド、アプリID、アクセスキー、およびシークレットキーが必要です。
GET
と POST
とDELETE
は、Mercury Cloudで使用されるHTTPメソッドです。各APIのメソッドの詳細については、APIリファレンスを参照してください。こちらのHTTPメソッドはAPI認証の部分でも使用されます。
アプリIDやアクセスキー、およびシークレットキーは、「サービス開始のご連絡」メールで提供されています。 これらは安全な場所に保管し、他人に開示しないでください。 これらはAPI URLの設定とAPI認証トークンの計算時に使用されます。
3.3 API認証
すべてのMercuryAPIは、クライアント検証するためにAPI認証トークンを必要とします。各APIを呼び出す際に、2つのヘッダー(x-dateとAuthorization)が必要です。それらが含まれていない場合、401のHTTPエラーコードが表示されます。
x-dateヘッダー
x-dateヘッダーは、RFC-7231形式でのUTC日付と時刻の形式を使用します。
例:
x-date: Fri, 09 Jul 2021 01:51:02 GMT
これは「2021-07-09T01:51:02Z」の時間を示しています。x-dateは現地時間ではなく、GMTタイムゾーンの時間であることにご注意ください。
Authorizationヘッダー
Authorizationヘッダーは指定されたAPIパス、HTTPメソッド、アプリID、アクセスキー、およびシークレットキーに基づいて生成されます。特徴DBに関連する一部のAPIではDB IDも必要となります。Authorizationは次のフォーマットに従います。
Authorization: hmac username="{Access_key}", algorithm="hmac-sha256", headers="x-date request-line", signature="{Signature}"
一般的なAuthorizationヘッダー例は次のとおりです。
Authorization: hmac username="005c5acf-5ea9-499c-8d3e-690413f9b5b9", algorithm="hmac-sha256", headers="x-date request-line", signature="kUJ6OHiMMBZnxgSEa2ARxVAlgjC2kzjedZgxOz07i+Y="
hmac username
はアクセスキーです。この例にある005c5acf-5ea9-499c-8d3e-690413f9b5b9
は、お客様のアクセスキーに置換してください。
signature
はHMAC-SHA256によって暗号化され、さらにbase64でエンコードされた文字列です。
signature = encode_base64(hmac_sha256(key={secret_key},message=concat("x-date: ", {x-date}, "/n", {method}, " ", {URL path}, " HTTPS/1.1")))
ステップバイステップで手順を説明します。
まず暗号化される前のmessage
を組み立てます。暗号化前の一般的なmessage
の例は次のとおりです。
x-date: Fri, 09 Jul 2021 01:51:02 GMT
POST /openapi/face/v1/abc1a8a7-038f-4f9a-b98a-5b602978b135/detect HTTP/1.1
x-date
はthe x-date headerで作成される内容と同様です。
POST
はHTTPメソッドです。使用するAPIのHTTPメソッドと一致させてください。
/openapi/face/v1/abc1a8a7-038f-4f9a-b98a-5b602978b135/detect
はURLパスです。abc1a8a7-038f-4f9a-b98a-5b602978b135
はアプリIDです。ここはお客様のアプリIDに置換ください。またAPIのURLパスも使用するAPIに置換してください。一部のAPIではDB IDも必要です。
例:
x-date: Fri, 09 Jul 2021 01:51:02 GMT
GET /openapi/face/v1/abc1a8a7-038f-4f9a-b98a-5b602978b135/databases/aed37153-16b6-4f19-a479-302049e44000 HTTP/1.1
aed37153-16b6-4f19-a479-302049e44000
はDB IDです。
シークレットキーblFWSvhp9pRz2JnRHnfvkFeAuApClhKg
を使用して、最初に作成した以下のメッセージを暗号化にします。
x-date: Fri, 09 Jul 2021 01:37:00 GMT
POST /openapi/face/v1/abc1a8a7-038f-4f9a-b98a-5b602978b135/detect HTTP/1.1
以下の内容が出力されます。
91427a38788c301667c604846b6011c550258230b69338de7598313b3d3b8be6
最後にbase64でエンコードすると、signature
は次のように完成されます。
kUJ6OHiMMBZnxgSEa2ARxVAlgjC2kzjedZgxOz07i+Y=
このsignature
を使用すると、上記と同じようなのAuthorizationヘッダーが完成されます。
Authorization: hmac username="005c5acf-5ea9-499c-8d3e-690413f9b5b9", algorithm="hmac-sha256", headers="x-date request-line", signature="kUJ6OHiMMBZnxgSEa2ARxVAlgjC2kzjedZgxOz07i+Y="
これで、x-date HeaderとAuthorization Headerを利用して、/openapi/face/v1/{app_id}/detect
のAPI呼び出しができます。
curl -X POST -d {} 'https://domain.com/openapi/face/v1/abc1a8a7-038f-4f9a-b98a-5b602978b135/detect' \
-H 'x-date: Fri, 09 Jul 2021 01:37:00 GMT' \
-H 'Authorization: hmac username="005c5acf-5ea9-499c-8d3e-690413f9b5b9", algorithm="hmac-sha256", headers="x-date request-line", signature="kUJ6OHiMMBZnxgSEa2ARxVAlgjC2kzjedZgxOz07i+Y="'
3.4 ヘッダー作成ツールサンプル
import base64
import datetime
import hashlib
import hmac
import urllib.parse
def generate_authorization_headers(access_key, secret_key, url, http_method):
RFC7231_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
xdate = datetime.datetime.utcnow().strftime(RFC7231_FORMAT)
url_path = urllib.parse.urlparse(url).path
signature = 'x-date: %s\n%s %s HTTP/1.1' % (xdate, http_method.upper(), url_path)
crypto = hmac.new(secret_key.encode('utf-8'), signature.encode('utf-8'), hashlib.sha256)
hmac_signature = base64.b64encode(crypto.digest()).decode('utf-8')
authorization = '''hmac username="%s", algorithm="hmac-sha256", headers="x-date request-line", signature="%s"''' % (access_key, hmac_signature)
return {
"x-date": xdate,
"Authorization": authorization
}
3.5 SwaggerHubで"Try it out"
SwaggerHubでは、「Try it out」ボタンを使用してブラウザーから直接API呼び出しをテストできるインタラクティブな方法を提供しています。Mercury Cloud Interactive APIドキュメントでは、この機能を使用する前に特別な認証を行うことが必要です。ここでは、Mercury Cloud InteractiveAPIドキュメントの「Try it out」機能を使用するための方法を解説します。
3.5.1 ヘッダーを準備
ヘッダー作成ツールで、x-dateヘッダーとAuthorizationヘッダーを準備します。
3.5.2 サーバーを選択
"Servers"のドロップダウンリストをクリックして、サービスエリアに応じたサーバーを選択してください。

3.5.3 Authorizationヘッダーで認証
サーバーリストの右側にある「Authorize」ボタンをクリックしてください。

次の画面が表示されます。Authorizationヘッダーを「Value」に貼り付けて、「Authorize」ボタンをクリックしてください。

これでAuthorizationヘッダーが設定されました。再認証するには「Logout」ボタンをクリックして、上記の手順をやり直してください。

3.5.4 パラメータを入力して試してみてください
これでAPI呼び出しを試すことができます。 List Feature DatabaseのAPIを例として試してみます。

「Try it out」ボタンをクリックすると「Execute」ボタンが表示されます。x-dateとapp_idパラメータを入力し、「Execute」ボタンをクリックしてください。

APIのレスポンスおよびいくつかの関連情報が表示されます。

Last updated
Was this helpful?