メインコンテンツへスキップ

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
このガイドはプレビュー機能を使用します。サーバーを --vsql_allow_preview_extensions=ON で起動してください。そうしないと INSTALL EXTENSION は拒否されます。
いくつかのテーブルの前に読み取り専用の JSON エンドポイントを置くには、通常、小さなサービスを書き、デプロイし、データベースアカウントを与え、稼働させ続ける必要があります。VillageSQL の vsql_rest 拡張機能は、代わりにサーバープロセスの内部からそれらのテーブルを提供するため、2 つ目のプロセスも新しいデプロイもありません。 デフォルトは開発者のマシン向けに作られており、ネットワーク向けではありません。何かに対してポートを開く前に、下の「ポートを公開する前に」を読んでください。

有効にする

先にデータベースとそのテーブルを作成します。リスナーは起動時にデータベースのレイアウトを読み取り、vsql_rest.schema_ttl 秒間(デフォルトは 60)キャッシュするため、その後に作成したテーブルはキャッシュが期限切れになるまで table not found と応答します。
次に、データベースを指定し、提供してよいテーブルを指定して、リスナーを起動します。

読み取り

テーブルはパスであり、クエリ文字列がフィルタリングを行います。各フィルターは column=operator.value です。
必要な列だけを要求し、それ以外は要求しません。
or=(...) で条件を組み合わせます。
limit と offset でページをめくります。
演算子は eq、neq、lt、lte、gt、gte、like、cs_like、in、および is です。in は ?id=in.(1,3) のようにリストを取り、is は ?price=is.null または ?price=is.not.null のように null を取ります。limit のないリクエストは最大 vsql_rest.max_rows 行を返し、初期値は 1000 です。

許可リスト

allowed_tables にないテーブルは、API から見れば存在しません。
レスポンスは 404 で、テーブルが存在しない場合も、単に公開を控えている場合も、同じ内容です。
allowed_tables を空のままにしておくことは、テーブルなしを意味しません。すべての テーブルを意味します。リスナーを有効にする前に、公開するつもりのテーブルを 設定してください。

テーブルごとのメソッド制限

table_methods は各テーブルが受け付ける HTTP メソッドを指定します。形式は table:METHOD,METHOD で、テーブルの間は | で区切ります。
デフォルトではすべてのテーブルがすべてのメソッドを受け付けるため、リスナーが起動する前にこれを設定してください。テーブルに許可されていないメソッドは拒否されます。
書き込みの許可も同じ設定です。
成功した挿入は空のボディで 201 を返します。キーの重複は 409 として返ります。

動作を確認する

5 つのステータスカウンターがリスナーについて報告し、実際にバインドしたポートも含まれます。
何も待ち受けていないとき http_port は 0 を示します。これはリスナーが起動したかどうかを知る最も手早い方法です。vsql_rest.port を 0 に設定するとオペレーティングシステムにポートの選択を任せ、どのポートが選ばれたかはこのカウンターで読み取ります。

ポートを公開する前に

デフォルトは扉を開けたままにしており、それぞれ単独では妥当です。 require_auth は OFF から始まるため、どのリクエストもトークンを持たず、必要ともしません。空の allowed_tables はスキーマ全体を公開します。空の table_methods は DELETE を含むすべてのメソッドを許可し、その状態のリスナーへの DELETE は成功します。
204 を返し、行は消えます。 まとめると、他に何も設定せずに有効にしたリスナーは、ポートに到達できる誰にでも、スキーマ内のすべてのテーブルの読み取り、挿入、更新、および削除を許します。ラップトップ上では便利です。それ以外の場所では、有効にする前に 4 つのことを変更してください。
次に、ssl_cert と ssl_key を設定して HTTPS で提供します。バインドアドレスの設定はなく、リスナーは起動した瞬間からすべてのインターフェイスにバインドするため、ファイアウォールでポートを遮断し、リバースプロキシだけが到達できるようにしてください。

トラブルシューティング

関連項目