Die Admin-API des Total.js CMS: eine Website per Code verwalten, Backup und Wiederherstellung
Alles, was die Admin-Oberfläche tut, läuft über einen einzigen Endpunkt: POST /admin/ mit dem Body { "schema": "<name>", "data": { ... } } (die API-Routen von Total.js, siehe API-Routen). Die Adresse stammt aus der Zeile $api : /admin/ der Datei config. Authentifizieren Sie sich mit dem Sitzungs-Cookie (POST /admin/ mit schema: "login" und login und password), mit dem Header x-token oder über OpenPlatform (Installation und erster Start).
Die Aktionen
| Plugin | Aufrufe (schema) | Berechtigung |
|---|---|---|
| Account | login, logout, admin_read, admin_save (Name, Login, Passwort), account | die Sitzung |
| Pages | pages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (liest das HTML), pages_save_html (id, html, bis zu 5 MB), pages_copy (from, to) | pages |
| Layouts | layouts_list, layouts_read, layouts_save, layouts_clone, layouts_remove, layouts_html, layouts_save_html, layouts_import | layouts |
| Widgets | widgets_list, widgets_read, widgets_save, widgets_remove, widgets_detail | widgets |
| Navigation | nav_list, nav_read, nav_save, nav_remove, nav_editor | navigation |
| Redirects | redirects_list, redirects_read, redirects_save (url, target, permanent), redirects_remove | redirects |
| Variables | variables_read, variables_save (vars) | variables |
| Posts | posts, posts_read, posts_create, posts_update, posts_remove, posts_clear, posts_categories | posts |
| Files | files_list, files_rename, files_clear, files_remove, und die Uploads unten | files |
| Settings | settings_read, settings_save, settings_test (prüft die SMTP-Einstellungen), chatgpt | settings |
| Dashboard | dashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_stats | keine |
Die Berechtigung admin (und jeder Benutzer mit dem Flag sa, einschließlich des Bot des Tokens) darf alle Aufrufe ausführen. Ein Aufruf ohne Berechtigung wird mit einem Fehler beantwortet, und login ist der einzige Aufruf, der keine Sitzung braucht.
Eine Seite und ihren Inhalt anlegen:
{ "schema": "pages_save", "data": { "name": "About", "layoutid": "<layout id>", "url": "/about/", "title": "About us" } }
{ "schema": "pages_save_html", "data": { "id": "<page id>", "html": "<h1>About us</h1>" } }pages_save antwortet mit { "success": true }; die ID lesen Sie mit pages_list. Bei einem Layout antwortet layouts_save mit der ID des Layouts in value. Fehlt bei einer Aktualisierung ein Feld, wird das Feld geleert (ein title, den Sie nicht senden, wird leer gespeichert), senden Sie also den ganzen Datensatz.
Dateien hochladen
POST /admin/upload/ nimmt einen Multipart-Upload an (bis 10 MB) und POST /admin/upload/base64/ einen JSON-Body mit einer Data-URI (png, jpeg oder gif). Beide antworten mit einer Liste von { id, name, type, ext, size, url }, wobei url gleich /download/<id>.<ext> ist.
Backup, Wiederherstellung und Löschen
Drei Routen aus controllers/api.js wirken auf die ganze Website und brauchen die Berechtigung admin:
| Route | Was sie tut |
|---|---|
GET /admin/backup/ | lädt den gesamten Dateispeicher (Metadaten, HTML von Seiten und Layouts, Dateien und Beiträge) als eine Textdatei herunter, benannt nach Website und Datum |
POST /admin/restore/ | lädt eine solche Datei hoch (bis 100 MB) und lädt sie ein. |
GET /admin/clear/ | löscht den Inhalt der Website. Es verwirft den Dateispeicher und lädt ihn neu, sodass Seiten, Layouts, Widgets und der Rest entfernt werde |
Machen Sie ein Backup, bevor Sie eine davon ausprobieren, öffnen Sie /admin/clear/ nie aus Neugier im Browser und halten Sie den Token geheim: Mit ihm leert ein einziges GET die Website.