📘

TiDB Serverless の Data Service を Postman から操作する

2024/10/10に公開

過去TiDB Serverless のREST型APIエンドポイントとなるData Service について触れました。
https://zenn.dev/kameping/articles/e43894068d9928
https://zenn.dev/kameping/articles/d2683639de9e9f

今日はこのエンドポイントをPostmanから触ってみます。
大元のドキュメントはこちらです。
https://docs.pingcap.com/ja/tidbcloud/data-service-postman-integration

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をクリックです。

EndpointShow 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アカウントは既に持っているものとしますが、まだの場合この記事を参考にしてください。
https://qiita.com/KameMan/items/3e8d3a6e138fc47abcc4
画面右の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