本記事では、HTTPを使用する方法について説明し、OceanBaseクラスタ情報を照会するインターフェース呼び出しを例に、obshellのオープンAPIの呼び出し方を紹介します。
リクエスト構造
完全なHTTPリクエストには、リクエストURI、リクエストメソッド、リクエストヘッダー、およびリクエストボディが含まれます。
リクエストURI
リクエストURIは以下の部分で構成されます:
{scheme}://{endpoint}/{resource-path}?{query-string}
| フィールド | 説明 |
|---|---|
| scheme | トランスポートプロトコルを指定します。通常は HTTP または HTTPS です。 |
| endpoint | obshellのサービスアドレスを指定します。例えば、10.10.10.1:2886 のように、具体的なデプロイメントによって決まります。 |
| resource-path | APIのリソースパスです。各APIのリソースパスについては、対応するAPIドキュメントの リクエストパス のセクションを参照してください。例えば、OceanBaseクラスタ情報を照会するためのリソースパスは /api/v1/ob/info です。 |
| query-string | クエリパラメータ。オプションで、a=10&b=hello のように複数のキーと値のペアで構成されます。query-string と resource-path の間は ? で区切ります。 |
obshellのサービスアドレスを10.10.10.1:2886とした場合、OceanBaseクラスタ情報の照会の完全なリクエストURIの例は次のとおりです:
http://10.10.10.1:2886/api/v1/ob/info
リクエストメソッド
HTTPプロトコルのメソッドであり、GET、PUT、POST、DELETEが含まれます。各インターフェースドキュメントでは、インターフェースのリクエストメソッドについて詳しく説明されています。例えば、OceanBaseクラスタ情報を照会するリクエストパスはGET /api/v1/ob/infoであり、このインターフェースのリクエストメソッドはGETであることを示しています。
リクエストヘッダー
認証情報など、リクエストの追加情報を含みます。
| 名前 | 必須 | 説明 | 例 |
|---|---|---|---|
| Content-Type | はい | メッセージボディのタイプ。obshellは統一的にapplication/jsonタイプのメッセージボディを使用します。 |
application/json |
認証の説明
詳細については、APIハイブリッド暗号化を参照してください。
返却構造
オープンAPIが返すデータは、統一されたデータ構造を使用します(個別の特殊なインターフェースは除く)。基本的な返却結果のデータ構造は以下のとおりです:
| パラメータ | タイプ | 説明 |
|---|---|---|
| data | any | 複合データ型 |
| error | ApiError | リクエストによって生成されたError。以下の情報が含まれます:
|
| successful | bool | リクエストが成功したかどうか |
| timestamp | time.Time | サーバーがリクエストを完了したタイムスタンプ |
| duration | int | サーバーがリクエストを処理した時間(ミリ秒) |
| status | int | HTTP Status仕様に準拠するエンコーディング |
| traceId | string | リクエストのTrace ID |
呼び出し例
curlツールを使用して、オープンAPIのインターフェースを呼び出すことができます。以下の例では、obshellアプリケーションへのアクセスアドレスは10.10.10.1、ポートは2886、アクセスするインターフェースは指定されたノードの削除です。ここで、 ${encrypted_header}は暗号化後のヘッダー内容を指し、 ${encrypted_body}は暗号化後のリクエストボディ内容を指します。具体的な生成方法については、APIハイブリッド暗号化を参照してください。
curl "http://10.10.10.1:2886/api/v1/agent/remove"
-H "Content-Type: application/json"
-H 'X-OCS-Header:${encrypted_header}'
-X POST
-d '${encrypted_body}'