2.1 全体説明
2.1.1 アクセスアドレス
| テスト環境 | |
|---|---|
| 本番環境 | https://api.racent.com/ |
2.1.2 インターフェース署名認証
インターフェースはAPI署名ベースの認証メカニズムを採用しており、リクエストの完全性とセキュリティを確保します。インターフェースを呼び出すたびに署名パラメータを付与する必要があり、サーバー側で署名の正当性を検証します。
共通パラメータ
以下のパラメータは、すべての インターフェースリクエストのQuery Stringに含める必要があります:
| パラメータ名 | パラメータ型 | 説明 | サンプル値 |
|---|---|---|---|
| access_key | String | アカウントID。呼び出し元の識別に使用します | 1000000059 |
| signature_nonce | String | 署名用の一意な乱数。リプレイ攻撃防止のため、 リクエストごとに異なる乱数値を使用する必要があります | 2206561-6450-430e-8b0a-26980754c0de |
| timestamp | String | リクエスト送信時のタイムスタンプ(単位:秒) | 1673418729 |
| signature_version | String | 署名アルゴリズムのバージョン。固定値「1.0」 | 1.0 |
| signature_method | String | 署名アルゴリズム。固定値「md5」 | md5 |
| signature | String | 今回のリクエストの署名値。他のパラメータと秘密鍵から算出します | 85ef54421c69edeb098c7b557c6c5cd5 |
説明:
access_keyとAccessSecret(秘密鍵)は、ログイン後に インターフェース管理-APIアクセス認証情報 から取得できます。signature_nonce毎回のリクエストが一意になるよう、UUIDまたは十分にランダムな文字列の使用を推奨します。timestampサーバー時刻との差が一定範囲(例:5分)を超えるリクエストは拒否されます。
署名メカニズム
ステップ1:正規化されたリクエスト文字列を構築する
1.パラメータのソート
すべての共通パラメータ(signature を除く)とインターフェースカスタムパラメータを、パラメータ名の辞書順昇順で並べ替えます。
2.パラメータのエンコード
各パラメータの名前と値を UTF-8 でエンコードし、RFC3986 ルールに従ってURLエンコードを行います:
- エンコードしない文字:
A-Z a-z 0-9 - _ . ~ - その他の文字(
スペース、/、?、=など)は%XX形式にエンコードする必要があります。例えばスペースは%20にエンコードされます。
3.パラメータの連結
- エンコード後のパラメータ名とパラメータ値を = で連結します
- すべてのパラメータペアを & で連結し、辞書順を維持します
最終的に得られる文字列をstringToSignと呼びます。
ステップ2:署名文字列を構築して署名を計算する
リクエストタイプに応じて、署名の計算方法は以下の通りです:
GET 请求
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
POST / PUT 请求(含 Body 参数)
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
説明:
- HTTPMethod は大文字で指定する必要があります。例:GET、POST
- jsonStringToBody はリクエストBodyの元のJSON文字列です(スペースと改行を除去し、フィールドをソートする必要があります)
- 数式内の + は文字列の連結を意味し、計算には使用されません
パラメータエンコーディング規則(RFC3986)
| 文字種別 | 処理方法 | 例 |
|---|---|---|
A-Z, a-z, 0-9, -, _, ., ~ | エンコードしない | abc123 → abc123 |
| スペース | %20 としてエンコード | a b → a%20b |
その他の ASCII 文字 | %XX(16進数)としてエンコード | " → %22 |
GETリクエストの例
前提:
- access_key = "1000000059"
- AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
- signature_nonce = "iobzx72w63"
- timestamp = "1755597512"
ステップ1: stringToSignを構築する
access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0×tamp=1755597512
Step2: 署名の計算
temp = md5("GET" + stringToSign) // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"
最終リクエストURL:
https://api.racent.com/api/v1/domain/tld?access_key=1000000059&signature_nonce=iobzx72w63×tamp=1755597512&signature_version=1.0&signature_method=md5&signature=a33bdb81ea79eb4ebbac9da043309c00
POST リクエストの例(Body を含む)
Body が以下の内容であると仮定します:
{"domain":"example.com"}
その MD5 値は次のとおりです:640c69595341436be9b0d1516d3d37ac
Step1: stringToSign を作成する
access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0×tamp=1755598851
Step2: 署名の計算
temp = md5("POST" + stringToSign) // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"
最終的なリクエストURL:
https://api.racent.com/v1/domain/query-domain?access_key=1000000059&signature_nonce=abjipo5ar5a×tamp=1755598851&signature_version=1.0&signature_method=md5&signature=29487fd8ae5b828415d05b691caf015c
2.1.3 インターフェースのレート制限
デフォルトのレート制限ルールでは、同一ユーザーによる同一インターフェースへのアクセスについて、以下の回数制限が適用されます:
- 1分あたり60回
- 1時間あたり500回
- 1日あたり1000回
2.1.4 インターフェース戻りパラメータ
パラメータの説明
| パラメータ名 | パラメータ型 | 説明 | サンプル値 |
|---|---|---|---|
| data | Object | 業務データ。インターフェースがエラーを返した場合、値はnullとなります | |
| code | Int | エラーコード。成功時は0を返し、エラー時は対応するエラーコードを返します | 0,1000,1001 |
| message | String | エラー内容の説明情報。インターフェースが成功した場合は"Success"を返します | over-rate-limit |
| errors | Object | 一部のエラーでは、このフィールドを通じてより具体的なエラーの説明が提供されます | |
| request_id | String | リクエストID。主に問題の調査を支援するために使用されます | 039ecdca-44d5-430f-8521-020f4953bcc5 |