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 は拒否されます。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 から見れば存在しません。
テーブルごとのメソッド制限
table_methods は各テーブルが受け付ける HTTP メソッドを指定します。形式は table:METHOD,METHOD で、テーブルの間は | で区切ります。
動作を確認する
5 つのステータスカウンターがリスナーについて報告し、実際にバインドしたポートも含まれます。http_port は 0 を示します。これはリスナーが起動したかどうかを知る最も手早い方法です。vsql_rest.port を 0 に設定するとオペレーティングシステムにポートの選択を任せ、どのポートが選ばれたかはこのカウンターで読み取ります。
ポートを公開する前に
デフォルトは扉を開けたままにしており、それぞれ単独では妥当です。require_auth は OFF から始まるため、どのリクエストもトークンを持たず、必要ともしません。空の allowed_tables はスキーマ全体を公開します。空の table_methods は DELETE を含むすべてのメソッドを許可し、その状態のリスナーへの DELETE は成功します。
ssl_cert と ssl_key を設定して HTTPS で提供します。バインドアドレスの設定はなく、リスナーは起動した瞬間からすべてのインターフェイスにバインドするため、ファイアウォールでポートを遮断し、リバースプロキシだけが到達できるようにしてください。
トラブルシューティング
関連項目
- vsql_rest — 拡張機能のリファレンスページ。追加されるすべての設定を掲載
- SQL から HTTP リクエストを送る — 同じサーバーが応答する側ではなく呼び出す側になる
- 外部 API のデータで行を拡充する — クエリを他者の API と結合する
- MySQL のセキュリティ強化 — ポートが到達可能になる前に他に閉じておくべきもの