StarRocks Restful API Standard
API Format
- API のフォーマットは
/api/{version}/{target-object-access-path}/{action}のパターンに従います。 {version}はv{number}として表され、例として v1, v2, v3, v4 などがあります。{target-object-access-path}は階層的に整理されており、詳細は後述します。{action}はオプションであり、API の実装者は可能な限り HTTP METHOD を使用して操作の意味を伝えるべきです。HTTP メソッドのセマンティクスが満たされない場合にのみ、アクションを使用します。例えば、オブジェクトの名前を変更するための HTTP メソッドがない場合などです。
ターゲットオブジェクトアクセスパスの定義
- REST API でアクセスされるターゲットオブジェクトは、階層的なアクセスパスに分類・整理する必要があります。アクセスパスのフォーマットは以下の通りです:
/primary_categories/primary_object/secondary_categories/secondary_object/.../categories/object
catalog, database, table, column の例を挙げると:
/catalogs: すべての catalog を表します。
/catalogs/hive: catalog カテゴリ内の "hive" という名前の特定の catalog オブジェクトを表します。
/catalogs/hive/databases: "hive" catalog 内のすべての database を表します。
/catalogs/hive/databases/tpch_100g: "hive" catalog 内の "tpch_100g" という名前の database を表します。
/catalogs/hive/databases/tpch_100g/tables: "tpch_100g" database 内のすべての table を表します。
/catalogs/hive/databases/tpch_100g/tables/lineitem: tpch_100g.lineitem table を表します。
/catalogs/hive/databases/tpch_100g/tables/lineitem/columns: tpch_100g.lineitem table 内のすべての column を表します。
/catalogs/hive/databases/tpch_100g/tables/lineitem/columns/l_orderkey: tpch_100g.lineitem table 内の特定の column l_orderkey を表します。
- カテゴリはスネークケースで命名され、最後の単語は複数形です。すべての単語は小文字で、複数の単語はアンダースコア (_) で接続されます。特定のオブジェクトはその実際の名前で命名されます。ターゲットオブジェクトの階層関係を明確に定義する必要があります。
HTTP メソッドの選択
- GET: 単一のオブジェクトを表示し、特定のカテゴリのすべてのオブジェクトをリストするために GET メソッドを使用します。GET メソッドによるオブジェクトへのアクセスは読み取り専用であり、リクエストボディを提供しません。
# database ssb_100g 内のすべての table をリスト
GET /api/v2/catalogs/default/databases/ssb_100g/tables
# table ssb_100g.lineorder を表示
GET /api/v2/catalogs/default/databases/ssb_100g/tables/lineorder
- POST: オブジェクトを作成するために使用します。パラメータはリクエストボディを通じて渡されます。冪等ではありません。オブジェクトが既に存在する場合、再作成は失敗し、エラーメッセージが返されます。
POST /api/v2/catalogs/default/databases/ssb_100g/tables/create -d@create_customer.sql
- PUT: オブジェクトを作成するために使用します。パラメータはリクエストボディを通じて渡されます。冪等です。オブジェクトが既に存在する場合、成功を返します。PUT メソッドは POST メソッドの CREATE IF NOT EXISTS バージョンです。
PUT /api/v2/databases/ssb_100g/tables/create -d@create_customer.sql
- DELETE: オブジェクトを削除するために使用します。リクエストボディを提供しません。削除するオブジェクトが存在しない場合、成功を返します。DELETE メソッドは DROP IF EXISTS のセマンティクスを持ちます。
DELETE /api/v2/catalogs/default/databases/ssb_100g/tables/customer
- PATCH: オブジェクトを更新するために使用します。リクエストボディを提供し、修正が必要な部分的な情報のみを含みます。
PATCH /api/v2/databases/ssb_100g/tables/customer -d '{"unique_key_constraints": ["c_custkey"]}'