TiDB Serverless の Data Service を Postman から操作する
過去TiDB Serverless のREST型APIエンドポイントとなるData Service について触れました。
今日はこのエンドポイントをPostmanから触ってみます。
大元のドキュメントはこちらです。
Data Service と Data App
まずはややこしいこの2つの位置づけを整理します。データベースクラスターに対するREST型APIエンドポイントを作成してくれるTiDB Serverlessの機能がData Service
です。Data Service
の機能で生成される特定のデータベースクラスターへのアクセスエンドポイント群がData App
として管理される、という関係性です。
さっそくやってみる
1. Data App の作成
まずは左ペインのData Service
を選択し、画面中央のCreate Data App
をクリックします。
Create
ボタンをクリックします。
+
ボタンを押し、Create Endpoint
を選択します。
Data App
は単純なデータベースへのエンドポイントではなくSQLが指定済のデータを操作するようエンドポイントになります。このためエンドポイントに含めるSQLを指定します。
use test;
select * from appflow
Run
ボタンをクリックしてデータが操作できることを確認します。
次にこのSQL用のパスを指定します。/testselect
とします。かならず/
から始まる必要があります。
Test
をクリックすると以下の通りHTTP Responseが出力されます。
テストが完了したらDeploy
をクリックします。もう一度ダイアログが出てきますが、再度Deploy
をクリックです。
Endpoint
のShow Code Example
をクリックします。
Basic Authentication
を選択して表示されたcurlコマンドをコピーしておきます。
2.API Key の作成
Settings
タブを開きます。
Create API Key
を開きます。
一旦権限はReadOnlyのままNext
をクリックします。
必要な情報をコピーしてDone
をクリックします。
3.Postmanの起動とインポート
では先ほど生成されたcurlコマンドをPostmanにインポートします。Postmanではcurlコマンドをインポートすると自動でPostman用コレクション(APIコールの設定)に変換してくれます。画面右上のRun in Postman
をクリックします。
for Web
をクリックすると別タブでPostmanが開きます。Postmanアカウントは既に持っているものとしますが、まだの場合この記事を参考にしてください。
画面右のCopt Data App URL
をクリックします。
コレクションのインポート
ボタンを押します。
表示されたダイアログに先ほどのcurlコマンドをペーストします。
Data App用curlコマンドではなくPostmanへのインポート専用URLであり以下のようなものが正しい値です
https://us-west-2.prod.aws.tidbcloud.com/api/v1/dataservices/external/appexport/postman?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3Mjg1OTM4MzAsImFwcGlkIjoiZGF0YWFwcC1uaHJPdG1DRSIsImNyZWF0ZXIiOiJoYXJ1bm9idS5rYW1lZGFAcGluZ2NhcC5jb20iLCJzZW5jZSI6InBvc3RtYW4ifQ.Ndh4w4pq_67kYfOKmD-635ZWV3VTAzihIqle8b_Uwu0
そうするとTiDB Cloud Data Serviceという名前のコレクションがインポートされます。 ![](https://storage.googleapis.com/zenn-user-upload/624d81dc633e-20241010.png) 変数タブをクリックするとあらかじめ2つの変数が予約されています。ここにコピーしたクレデンシャルを初期値と現在値両方にペーストして**保存します。** (忘れやすいので注意) ![](https://storage.googleapis.com/zenn-user-upload/344231ec35a1-20241010.png) つぎに個別のAPIコールで以下のように変数を呼び出します。
{{PUBLIC_KEY}},
{{PRIVATE_KEY}}はPostman書式です。
{{}}で囲まれた変数を呼び出すという意味です。マウスをホバーすると変数として認識されていることがわかります。 ![](https://storage.googleapis.com/zenn-user-upload/637eec923abf-20241010.png) **保存を押して**
送信`をクリックするとステータスコード200と共にJSONでSQL結果が戻ってきます。
Discussion