Guide pratique de l'API de compression : documentation détaillée de l'interface RESTful

Conclusion d'abord : SmartSlim Server fournit une API RESTful comprenant 4 interfaces principales — compression par upload, compression par lot, interrogation de statut, notification par callback — prenant en charge deux méthodes d'authentification : API Key et Bearer Token. La compression par upload d'un PDF de 100 Mo prend environ 8 secondes, la compression par lot de 100 fichiers environ 12 secondes. La limitation de débit par défaut est de 60 requêtes par minute, pouvant être portée à 300 pour la version entreprise. Cet article fournit les tableaux de paramètres détaillés des 4 interfaces, des exemples d'appels Python/JavaScript/curl et des solutions de gestion des erreurs. Commençons par un aperçu de l'API, puis détaillons chaque interface.

Si vous avez besoin d'une intégration SDK locale plutôt que d'appels via API HTTP, nous vous recommandons de lire d'abord Guide d'intégration du SDK de compression : appels multilangues Python/Java/C#

I. Vue d'ensemble de l'API

L'API RESTful de SmartSlim Server est développée sur le framework FastAPI. Toutes les interfaces renvoient des données au format JSON et prennent en charge le téléchargement de fichiers en multipart/form-data. Le chemin de base de l'API est /api/v1/, et toutes les requêtes doivent comporter des informations d'authentification.

InterfaceMéthodeCheminFonctionSynchrone/Asynchrone
Compression par uploadPOST/api/v1/compressTélécharge un seul fichier et le compresseSynchrone (moins de 50 Mo)/Asynchrone
Compression par lotPOST/api/v1/compress/batchTélécharge plusieurs fichiers et les compresseAsynchrone
Interrogation de statutGET/api/v1/status/{task_id}Interroge le statut de la tâche de compressionSynchrone
Notification par callbackPOSTURL de callback clientNotifie activement après la compressionPush asynchrone

Deux méthodes d'authentification : l'authentification API Key est adaptée aux appels côté serveur, l'authentification Bearer Token aux appels côté front-end. Le tableau ci-dessous compare les caractéristiques des deux méthodes.

Méthode d'authentificationEn-tête de requêteValiditéCas d'usageSécurité
API KeyX-API-Key: your-keyPermanent (révocable)Appels côté serveurMoyenne (HTTPS requis)
Bearer TokenAuthorization: Bearer token24 heuresAppels côté front-endÉlevée (validité courte)

II. Détail des paramètres de chaque interface

1. Compression par uploadInterface

L'interface de compression par upload reçoit un seul fichier et renvoie le résultat de compression. Pour les fichiers de moins de 50 Mo, le lien de téléchargement du fichier compressé est renvoyé de manière synchrone ; pour les fichiers de plus de 50 Mo, un identifiant de tâche est renvoyé de manière asynchrone.

ParamètreTypeRequisValeur par défautDescription
filemultipart/fileOui-Fichier à compresser
formatstringNonDétection automatiqueType de fichier (pdf/image/ofd)
levelstringNonmediumNiveau de compression (low/medium/high/ultra)
qualityintegerNon75Facteur de qualité (1-100)
callback_urlstringNon-AsynchroneNotification par callbackURL

2. Compression par lotInterface

L'interface de compression par lot reçoit plusieurs fichiers, les traite de manière asynchrone et renvoie un identifiant de tâche par lot. Elle permet de spécifier le nombre de concurrents, le maximum étant limité par la licence.

ParamètreTypeRequisValeur par défautDescription
filesmultipart/file[]Oui-Liste de fichiers à compresser (100 maximum)
levelstringNonmediumNiveau de compression
qualityintegerNon75Facteur de qualité
workersintegerNon4Nombre de concurrents (1-16)
callback_urlstringNon-URL de callback de fin

3. Interrogation de statutInterface

L'interface d'interrogation de statut permet de consulter l'état actuel et les résultats d'une tâche de compression asynchrone via l'identifiant de tâche.

Champ de retourTypeDescription
task_idstringIdentifiant unique de tâche
statusstringStatut (pending/processing/completed/failed)
progressintegerPourcentage de progression (0-100)
download_urlstringLien de téléchargement du résultat (après completion)
original_sizeintegerTaille du fichier original (octets)
compressed_sizeintegerTaille après compression (octets)
errorstringMessage d'erreur (en cas d'échec)

III. Exemples d'appels en trois langages

Voici des exemples d'appels en curl, Python et JavaScript, tous basés sur la compression par upload d'un seul fichier PDF.

LangageCode principalDescription
curlcurl -X POST -H "X-API-Key: key" -F "file=@doc.pdf" -F "level=medium" http://localhost:8000/api/v1/compressAppel en ligne de commande
Pythonrequests.post(url, headers={"X-API-Key":key}, files={"file":open("doc.pdf","rb")}, data={"level":"medium"})Bibliothèque requests
JavaScriptfetch(url, {method:"POST", headers:{"X-API-Key":key}, body:formData})Fetch API

IV. Limitation de débit et gestion des erreurs

L'API dispose d'un mécanisme complet de limitation de débit et de gestion des erreurs. Comprendre les codes d'état HTTP et les codes d'erreur est essentiel pour écrire un code d'appel robuste.

Code d'état HTTPCode d'erreurSignificationSuggestion de traitement
200-SuccèsAnalyser les données de réponse
400INVALID_PARAMErreur de paramètreVérifier les paramètres de requête
401UNAUTHORIZEDÉchec d'authentificationVérifier l'API Key/le Token
413FILE_TOO_LARGEFichier trop volumineuxUtiliser le téléchargement par blocs
429RATE_LIMITEDRequêtes trop fréquentesReprendre avec backoff exponentiel
500INTERNAL_ERRORErreur serveurReprendre ou contacter le support
503SERVICE_UNAVAILABLEService indisponibleReprendre après attente

Détails de la stratégie de limitation de débit : par défaut 60 requêtes par minute, 10 concurrents par seconde ; la version entreprise passe à 300 requêtes par minute et 30 concurrents par seconde. En cas de dépassement, le code 429 est renvoyé, les en-têtes de réponse contiennent X-RateLimit-Remaining (nombre restant) et X-RateLimit-Reset (horodatage de réinitialisation). Il est recommandé que le client implémente un backoff exponentiel : après réception d'un 429, attendre 1 seconde avant de reprendre, puis 2 secondes, puis 4 secondes, avec un maximum de 3 tentatives.

Type de fichierTaille originaleTaille après compressionTemps de compressionTaux de compression
PDF (document numérisé)80 Mo8,2 Mo6,5 s89,8 %
PDF (version électronique)15 Mo3,1 Mo1,2 s79,3 %
Image JPEG12 Mo2,8 Mo0,8 s76,7 %
Image PNG25 Mo6,5 Mo1,5 s74,0 %
Document OFD30 Mo5,2 Mo2,0 s82,7 %

Si vous souhaitez comprendre les principes de conception sous-jacents de la file d'attente des tâches de compression, vous pouvez consulter Conception de la file d'attente des tâches de compression. Si vous avez besoin de déployer le service API via Docker, vous pouvez consulter Déploiement Docker du service de compression

V. FAQ

Q1:Comment s'authentifier pour appeler l'API de compression ?

L'API de compression de SmartSlim Server prend en charge deux méthodes d'authentification : l'authentification par API Key (transmission de la clé dans l'en-tête X-API-Key, adaptée aux appels côté serveur) et l'authentification par Bearer Token (transmission d'un jeton JWT dans l'en-tête Authorization, adaptée aux appels côté front-end). L'API Key est permanente mais peut être révoquée à tout moment, le Token a une validité de 24 heures et doit être rafraîchi régulièrement. En production, la méthode API Key est recommandée pour sa simplicité et sa fiabilité.

Q2:Quels formats de fichiers l'API de compression prend-elle en charge ?

L'API de la version serveur de SmartSlim prend en charge les formats PDF, images (jpg/jpeg/tif) et OFD, avec une limite de 1 Go par fichier. L'API de la version réseau de SmartSlim prend en charge les 10 catégories et plus de 40 formats (dont vidéo, audio, documents Office, etc.), avec une limite de 10 Go par fichier. Lors de l'appel, le paramètre format permet de spécifier le type de fichier ; s'il n'est pas transmis, la détection est automatique. Attention : la version serveur ne prend en charge que les trois formats PDF/images/OFD, le support de tous les formats nécessite la version réseau.

Q3:L'API de compression a-t-elle une limite de fréquence d'appel ?

Une stratégie de limitation de débit protège la stabilité du service. Limites par défaut : 60 requêtes par minute, 10 concurrents par seconde. En cas de dépassement, le code d'état 429 est renvoyé, les en-têtes de réponse contiennent les champs X-RateLimit-Remaining et X-RateLimit-Reset. La version entreprise peut passer à 300 requêtes par minute et 30 concurrents par seconde. Il est recommandé que le client implémente un mécanisme de reprise avec backoff exponentiel : après réception d'un 429, attendre 1-2-4 secondes en augmentant progressivement.

Q4:Comment l'API de compression gère-t-elle les gros fichiers ?

Pour les gros fichiers (plus de 50 Mo), l'interface de téléchargement par blocs est recommandée : le fichier est divisé en plusieurs blocs de 5 Mo, une fois le téléchargement terminé, la fusion et la compression sont notifiées. Une fois la compression terminée, le résultat est obtenu via notification de callback ou interrogation de l'interface de statut. La compression des gros fichiers est asynchrone et ne bloque pas l'appel API. La compression d'un PDF de 100 Mo prend environ 8 secondes, celle d'une vidéo de 1 Go environ 90 secondes, un lien de téléchargement étant généré automatiquement à la fin.

Conclusion

L'API RESTful de SmartSlim Server fournit 4 interfaces principales — compression par upload, compression par lot, interrogation de statut, notification par callback — couvrant tous les scénarios, du fichier unique au traitement par lot. Double choix d'authentification : API Key pour le côté serveur, Bearer Token pour le côté front-end. Stratégie de limitation de débit claire : 60 requêtes par minute par défaut, 300 pour la version entreprise, code d'état 429 avec reprise par backoff exponentiel. Un PDF numérisé de 80 Mo est compressé à 8,2 Mo en seulement 6,5 secondes, soit un taux de compression de 89,8 %.

Retenez trois points : premièrement, pour les fichiers de moins de 50 Mo, le résultat est renvoyé de manière synchrone ; au-delà, le traitement est asynchrone avec interrogation par identifiant de tâche ; deuxièmement, en cas de 429 de limitation de débit, implémentez un backoff exponentiel, ne relancez pas aveuglément ; troisièmement, pour les gros fichiers, utilisez l'interface de téléchargement par blocs, en blocs de 5 Mo. En choisissant la bonne interface et les bons paramètres, l'appel à l'API de compression est en réalité très simple. Si vous préférez l'intégration SDK locale aux appels HTTP, consultez le guide d'intégration du SDK de compression.

Besoin de compresser des fichiers ? Essayez SmartSlim

Construit sur un moteur de compression Rust auto-développé, prenant en charge 10 catégories et plus de 40 formats, dont PDF, images, vidéo, Office et OFD, avec une compression locale qui garde vos données sur place.