コンテンツにスキップ

サーバー

Terminal window
npm install -g @petradb/server
Terminal window
petradb-server [OPTIONS] [path]

パスが指定された場合、サーバーはその場所に永続データベースを開く(または作成する)します。パスなしの場合、インメモリデータベースが使用されます。

オプション説明
-m, --memoryインメモリデータベースを使用
-p, --portポート番号(デフォルト:5480
-h, --hostホストアドレス(デフォルト:127.0.0.1
-c, --configTOML設定ファイルのパス
Terminal window
# デフォルトポートでインメモリデータベース
petradb-server
# カスタムポートで永続データベース
petradb-server -p 8080 mydata.db
# 設定ファイル付き
petradb-server -c petradb.toml mydata.db

TOMLファイルで認証、CORS、セッション制限を制御します。

auth = "basic"
[[users]]
username = "admin"
password = "$HASHED_PASSWORD"
[[users]]
username = "reader"
password = "$HASHED_PASSWORD"
[cors]
origin = "*" # "*"(デフォルト)、"none"、または特定のオリジン
[sessions]
max_sessions = 100 # 0 = 無制限(デフォルト)
モード説明
"none"認証なし(設定ファイルがない場合のデフォルト)
"basic"[[users]]リストに対するHTTP Basic認証

設定ファイル内のパスワードはPBKDF2ハッシュとして保存されます。

auth = "basic"の場合、すべてのリクエスト(GET /healthを除く)にAuthorization: Basic <credentials>ヘッダーが必要です。

originの値動作
"*"(デフォルト)すべてのオリジンを許可
"none"CORSヘッダーなし
URL(例:"https://app.example.com"そのオリジンのみ許可

すべてのSQLリクエストとレスポンスはPetraDBバイナリコーデック(application/octet-stream)を使用します。これらのエンドポイントを直接呼び出す代わりに、@petradb/clientライブラリを使用してください。

POST /sql
Content-Type: application/octet-stream
X-Session-Id: <session-id> (オプション)
<sql text>

バイナリエンコードされたSeq[Result]を返します。X-Session-Idヘッダーなしの場合、各リクエストは一時的なワンオフセッションで実行されます。

POST /session

{ "sessionId": "<id>" }を返します。返されたIDを後続のX-Session-Idヘッダーで使用して、リクエスト間でトランザクション状態を共有します。

DELETE /session/<id>

成功時に{ "ok": "true" }を返し、セッションが存在しない場合は404を返します。

GET /health

{ "status": "ok" }を返します。認証の対象外です。

ステータス意味
400SQLパースエラー、型エラー、または未定義の参照
401認証情報が欠落または無効
409スキーマまたは制約違反
503セッション制限に達した