Komprimierungs-API-Leitfaden: RESTful-Schnittstellendokumentation

Fazit vorab: SmartSlim Server bietet eine RESTful-API mit vier Hauptschnittstellen – Upload-Komprimierung, Batch-Komprimierung, Statusabfrage und Callback-Benachrichtigung – und unterstützt API-Key- und Bearer-Token-Authentifizierung. Die Upload-Komprimierung einer 100MB-PDF dauert ca. 8 Sekunden, die Batch-Komprimierung von 100 Dateien ca. 12 Sekunden. Standard-Rate-Limit: 60 Anfragen pro Minute, Enterprise bis 300. Dieser Artikel bietet Parameterdetailtabellen für alle vier Schnittstellen, Python/JavaScript/curl-Aufrufbeispiele und Fehlerbehandlungsstrategien. Im Folgenden wird mit einem API-Überblick begonnen und jede Schnittstelle detailliert erläutert.

Wenn Sie das SDK lokal integrieren möchten statt HTTP-API-Aufrufe zu verwenden, lesen Sie zunächst Komprimierungs-SDK-Integrationsleitfaden: Python/Java/C# Multi-Language.

1. API-Schnittstellenübersicht

Die RESTful-API des SmartSlim Server basiert auf dem FastAPI-Framework, alle Schnittstellen geben JSON-Daten zurück und unterstützen multipart/form-data-Datei-Uploads. Der API-Basispfad lautet /api/v1/, alle Anfragen müssen Authentifizierungsinformationen enthalten.

SchnittstelleMethodePfadFunktionSync/Async
Upload-KomprimierungPOST/api/v1/compressEinzeldatei hochladen und komprimierenSync (unter 50MB)/Async
Batch-KomprimierungPOST/api/v1/compress/batchMehrere Dateien hochladen und komprimierenAsync
StatusabfrageGET/api/v1/status/{task_id}Komprimierungsaufgabenstatus abfragenSync
Callback-BenachrichtigungPOSTClient-Callback-URLAktive Benachrichtigung nach AbschlussAsync-Push

Es gibt zwei Authentifizierungsmethoden: API-Key-Authentifizierung für Server-Aufrufe und Bearer-Token-Authentifizierung für Frontend-Aufrufe. Die folgende Tabelle vergleicht die Merkmale beider Methoden.

AuthentifizierungsmethodeAnfrage-HeaderGültigkeitAnwendungsszenarioSicherheit
API KeyX-API-Key: your-keyDauerhaft (widerrufbar)Server-AufrufeMittel (HTTPS erforderlich)
Bearer TokenAuthorization: Bearer token24 StundenFrontend-AufrufeHoch (kurzlebig)

2. Schnittstellenparameter im Detail

1. Upload-Komprimierungsschnittstelle

Die Upload-Komprimierungsschnittstelle empfängt eine einzelne Datei und gibt das Komprimierungsergebnis zurück. Bei Dateien unter 50MB wird synchron ein Download-Link zurückgegeben, bei über 50MB asynchron eine Task-ID.

ParameterTypErforderlichStandardwertBeschreibung
filemultipart/fileJa-Zu komprimierende Datei
formatstringNeinAuto-ErkennungDateityp (pdf/image/ofd)
levelstringNeinmediumKomprimierungsstufe (low/medium/high/ultra)
qualityintegerNein75Qualitätsfaktor (1-100)
callback_urlstringNein-Async-Callback-Benachrichtigungs-URL

2. Batch-Komprimierungsschnittstelle

Die Batch-Komprimierungsschnittstelle empfängt mehrere Dateien, verarbeitet asynchron und gibt eine Batch-Task-ID zurück. Die Parallelitätszahl kann angegeben werden, die maximale Parallelität wird durch die Lizenz beschränkt.

ParameterTypErforderlichStandardwertBeschreibung
filesmultipart/file[]Ja-Liste der zu komprimierenden Dateien (max. 100)
levelstringNeinmediumKomprimierungsstufe
qualityintegerNein75Qualitätsfaktor
workersintegerNein4Parallelitätszahl (1-16)
callback_urlstringNein-Abschluss-Callback-URL

3. Statusabfrageschnittstelle

Die Statusabfrageschnittstelle fragt über die Task-ID den aktuellen Status und das Ergebnis einer asynchronen Komprimierungsaufgabe ab.

RückgabefeldTypBeschreibung
task_idstringEindeutige Task-Kennung
statusstringStatus (pending/processing/completed/failed)
progressintegerFortschritt in Prozent (0-100)
download_urlstringDownload-Link des Ergebnisses (nach Abschluss)
original_sizeintegerUrsprüngliche Dateigröße (Bytes)
compressed_sizeintegerKomprimierte Größe (Bytes)
errorstringFehlermeldung (bei Fehlschlag)

3. Aufrufbeispiele für drei Sprachen

Im Folgenden werden Aufrufbeispiele für curl, Python und JavaScript gezeigt, jeweils am Beispiel der Upload-Komprimierung einer einzelnen PDF-Datei.

SpracheKern-CodeBeschreibung
curlcurl -X POST -H "X-API-Key: key" -F "file=@doc.pdf" -F "level=medium" http://localhost:8000/api/v1/compressKommandozeilen-Aufruf
Pythonrequests.post(url, headers={"X-API-Key":key}, files={"file":open("doc.pdf","rb")}, data={"level":"medium"})requests-Bibliothek
JavaScriptfetch(url, {method:"POST", headers:{"X-API-Key":key}, body:formData})Fetch API

4. Rate-Limiting und Fehlerbehandlung

Die API verfügt über ein vollständiges Rate-Limiting- und Fehlerbehandlungssystem. Das Verständnis der HTTP-Statuscodes und Fehlercodes ist Voraussetzung für robusten Aufrufcode.

HTTP-StatuscodeFehlercodeBedeutungBehandlungsempfehlung
200-ErfolgResponse-Daten parsen
400INVALID_PARAMParameterfehlerAnfrageparameter prüfen
401UNAUTHORIZEDAuthentifizierung fehlgeschlagenAPI-Key/Token prüfen
413FILE_TOO_LARGEDatei zu großChunk-Upload verwenden
429RATE_LIMITEDZu viele AnfragenExponential-Backoff-Retry
500INTERNAL_ERRORServerfehlerWiederholen oder Support kontaktieren
503SERVICE_UNAVAILABLEDienst nicht verfügbarNach Wartezeit wiederholen

Rate-Limiting-Details: Standardmäßig 60 Anfragen pro Minute, 10 gleichzeitige pro Sekunde; Enterprise 300 pro Minute, 30 gleichzeitige pro Sekunde. Bei Überschreitung wird 429 zurückgegeben, der Response-Header enthält X-RateLimit-Remaining (verbleibende Anfragen) und X-RateLimit-Reset (Reset-Zeitstempel). Empfohlen wird clientseitiger Exponential-Backoff: Nach 429 1 Sekunde warten und wiederholen, bei erneutem Fehlschlagen 2 Sekunden, dann 4 Sekunden, maximal 3 Wiederholungen.

DateitypUrsprüngliche GrößeKomprimierte GrößeKomprimierungsdauerKomprimierungsrate
PDF (Scan)80MB8,2MB6,5s89,8%
PDF (elektronisch)15MB3,1MB1,2s79,3%
JPEG-Bild12MB2,8MB0,8s76,7%
PNG-Bild25MB6,5MB1,5s74,0%
OFD-Dokument30MB5,2MB2,0s82,7%

Wenn Sie mehr über das zugrundeliegende Designprinzip der Komprimierungs-Task-Queue erfahren möchten, siehe Design der Komprimierungs-Task-Queue. Wenn Sie den API-Dienst per Docker bereitstellen möchten, siehe Docker-Bereitstellung des Komprimierungsdienstes.

5. Häufig gestellte Fragen (FAQ)

F1: Wie authentifiziert man Komprimierungs-API-Aufrufe?

Die Komprimierungs-API des SmartSlim Server unterstützt zwei Authentifizierungsmethoden: API-Key-Authentifizierung (Schlüssel im Anfrage-Header X-API-Key, geeignet für Server-Aufrufe) und Bearer-Token-Authentifizierung (JWT-Token im Authorization-Header, geeignet für Frontend-Aufrufe). API-Keys sind dauerhaft gültig aber jederzeit widerrufbar, Tokens gelten 24 Stunden und müssen regelmäßig erneuert werden. Für Produktionsumgebungen wird die API-Key-Methode empfohlen – einfach und zuverlässig.

F2: Welche Dateiformate unterstützt die Komprimierungs-API?

Die Server-Edition-API von SmartSlim unterstützt PDF, Bilder (jpg/jpeg/tif) und OFD-Formate, mit einer Dateigrößenobergrenze von 1GB. Die Cloud-Edition-API unterstützt alle 10 Kategorien und 40+ Formate (inkl. Video, Audio, Office-Dokumente usw.), mit einer Obergrenze von 10GB pro Datei. Beim Aufruf wird der Dateityp über den format-Parameter angegeben; wird dieser nicht übergeben, erfolgt eine automatische Erkennung. Hinweis: Die Server-Edition unterstützt nur PDF/Bilder/OFD, für alle Formate ist die Cloud-Edition erforderlich.

F3: Gibt es Aufruflimits für die Komprimierungs-API?

Zum Schutz der Dienststabilität gibt es Rate-Limiting-Strategien. Standard-Limit: 60 Anfragen pro Minute, 10 gleichzeitige pro Sekunde. Bei Überschreitung wird Statuscode 429 zurückgegeben, der Response-Header enthält X-RateLimit-Remaining und X-RateLimit-Reset. Die Enterprise-Edition kann auf 300 Anfragen pro Minute und 30 gleichzeitige pro Sekunde erhöht werden. Es wird empfohlen, clientseitig einen Exponential-Backoff-Retry-Mechanismus zu implementieren – nach Erhalt von 429 mit 1-2-4 Sekunden inkrementell wiederholen.

F4: Wie verarbeitet die Komprimierungs-API große Dateien?

Für große Dateien (über 50MB) wird die Chunk-Upload-Schnittstelle empfohlen: Die Datei wird in mehrere 5MB-Chunks aufgeteilt und hochgeladen, nach Abschluss wird die Zusammenführung und Komprimierung angestoßen. Nach Abschluss wird das Ergebnis über Callback-Benachrichtigung oder Statusabfrage-Schnittstelle abgerufen. Die Komprimierung großer Dateien erfolgt asynchron und blockiert nicht den API-Aufruf. Eine 100MB-PDF dauert ca. 8 Sekunden, ein 1GB-Video ca. 90 Sekunden, danach wird automatisch ein Download-Link generiert.

Zusammenfassung

Die RESTful-API des SmartSlim Server bietet vier Hauptschnittstellen – Upload-Komprimierung, Batch-Komprimierung, Statusabfrage und Callback-Benachrichtigung – und deckt das gesamte Spektrum von Einzeldatei- bis Batch-Verarbeitung ab. Authentifizierung wahlweise: API-Key für Server, Bearer-Token für Frontend. Rate-Limiting klar definiert: Standard 60 pro Minute, Enterprise 300, Statuscode 429 mit Exponential-Backoff-Retry. Eine 80MB-Scan-PDF wird in 6,5 Sekunden auf 8,2MB komprimiert, Rate 89,8%.

Drei Punkte zum Merken: Erstens unter 50MB synchrone Rückgabe des Ergebnisses, darüber asynchron mit Task-ID-Abfrage; zweitens bei 429-Rate-Limit Exponential-Backoff-Retry implementieren, nicht einfach weiter probieren; drittens große Dateien über die Chunk-Upload-Schnittstelle in 5MB-Stücken hochladen. Mit den richtigen Schnittstellen und Parametern ist der API-Aufruf eigentlich ganz einfach. Wenn Sie eher lokales SDK als HTTP bevorzugen, siehe den Komprimierungs-SDK-Integrationsleitfaden.

Dateien komprimieren? Probieren Sie SmartSlim

Basierend auf einer selbstentwickelten Rust-Komprimierungs-Engine, unterstützt 10 Kategorien und über 40 Formate, darunter PDF, Bilder, Video, Office und OFD, mit lokaler Komprimierung, die Ihre Daten vor Ort behält.