eb62b381a1
- backup CLI: add --all-databases, --database, --data-root flags - backup format: tar.gz with databases/<name>/ + backup.json metadata - HTTP API: new endpoints /databases, /backup, /backups, /restore - HTTP API: database switching via X-Database header - Admin panel: database selector dropdown, Databases tab, Backups tab - Admin panel: backup/restore UI with fetch() to new endpoints - Update deps: hunos 1.3.0, jwt-nim-baraba 2.1.0 - Docker: backup cron uses --all-databases --data-root=/data/databases - Docs: update api-http.md, protocol.md with correct endpoints - OpenAPI spec updated to v1.1.6 Known limitation: DELETE /databases disabled due to ORC SIGSEGV in LSMTree.close(). Use SQL DROP DATABASE instead.
2.7 KiB
2.7 KiB
HTTP/REST API
JSON-базиран REST API за уеб приложения.
Базов URL
http://localhost:9912
Endpoints
GET /health
Health проверка:
curl http://localhost:9912/health
GET /metrics
Prometheus метрики:
curl http://localhost:9912/metrics
POST /auth
JWT автентикация:
curl -X POST http://localhost:9912/auth \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "secret"}'
POST /query
Изпълнение на SQL заявка:
curl -X POST http://localhost:9912/query \
-H "Content-Type: application/json" \
-H "X-Database: default" \
-d '{"query": "SELECT * FROM users WHERE age > 18"}'
Отговор:
{
"columns": ["name", "age"],
"rows": [{"name": "Alice", "age": 30}],
"affectedRows": 0
}
Забележка: Header
X-Databaseизбира към коя база данни да се изпълни заявката. Ако липсва, се използваdefault.
GET /tables
Списък с таблици в избраната база данни:
curl http://localhost:9912/tables -H "X-Database: default"
GET /databases
Списък с налични бази данни:
curl http://localhost:9912/databases
POST /databases
Създаване на нова база данни (изисква admin права):
curl -X POST http://localhost:9912/databases \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"name": "mydb"}'
POST /backup
Създаване на backup (изисква admin права):
# Backup на всички бази данни
curl -X POST http://localhost:9912/backup \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"all": true}'
# Backup на единична база
curl -X POST http://localhost:9912/backup \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"database": "default"}'
GET /backups
Списък с налични архиви:
curl http://localhost:9912/backups -H "Authorization: Bearer <token>"
POST /restore
Възстановяване от архив (изисква admin права):
curl -X POST http://localhost:9912/restore \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"input": "backup_1234567890.tar.gz", "all": true}'
Грешки
{
"error": "Unauthorized"
}
Автентикация
curl -H "Authorization: Bearer <token>" \
http://localhost:9912/metrics