Points clés à retenir
- Conservez l’Auth Secret sur un serveur de confiance et transmettez-le via des variables d’environnement.
- Créez une seule Assembly avec un Step de téléversement et un Step de redimensionnement d’image qui fait tenir l’image dans un cadre de 400 × 400 pixels.
- Affichez à la fois l’URL du résultat et l’identifiant de l’Assembly pour faciliter l’examen de la première exécution.
L’intégration Transloadit utile la plus courte est un script côté serveur qui téléverse une seule image et produit une seule version dérivée. Elle démontre que les informations d’identification, le transfert de fichiers, le traitement et la gestion des résultats fonctionnent avant qu’un navigateur, une destination de stockage, une base de données ou un webhook n’ajoute de la complexité.
L’essentiel
- Considérez le fichier renvoyé comme temporaire tant qu’un Step d’export ne l’a pas stocké de façon permanente.
Commencer par un seul processus serveur de confiance
Créez un Workspace gratuit, ouvrez la page Informations d’identification et générez une Auth Key et un Auth Secret. Vous avez besoin des deux valeurs pour ce guide de démarrage rapide côté serveur. Ne collez aucune de ces valeurs dans le fichier source et n’envoyez jamais le secret à un navigateur. Le SDK Node utilise cette paire pour authentifier les requêtes sans transmettre l’Auth Secret comme information d’identification dans la requête.
Choisissez une petite image JPEG, PNG, WebP ou AVIF déjà présente sur le disque. Un fichier d’entrée de taille modeste permet une première exécution rapide et rend le résultat facile à reconnaître. Le script accepte le chemin du fichier comme seul argument de ligne de commande : vous pouvez donc réessayer le même code avec un autre fichier de test sans le modifier.
Auth Key
Identifie les informations d’identification utilisées pour l’Assembly et peut être référencée sans risque par du code d’intégration de confiance.
Auth Secret
Reste dans l’environnement du serveur et est utilisé par le SDK pour authentifier la requête.
Un seul fichier local
Permet de concentrer cette exécution sur le parcours via l’API plutôt que sur l’état du téléversement dans le navigateur ou les imports distants.
Installer le SDK et préparer la commande
Créez un projet vide utilisant les modules ES et ajoutez la version actuelle du SDK Node avec npm. Dans la section suivante, enregistrez le code TypeScript sous le nom quickstart.ts, puis exécutez-le avec la commande indiquée après le code. Cet exemple de démarrage rapide exécute directement le fichier TypeScript grâce à la suppression native des annotations de type de Node ; il n’a donc besoin ni de tsx ni de ts-node. La suppression native des annotations de type est activée par défaut à partir de Node 22.18 et Node 23.6 : utilisez donc Node 22.18+, 23.6+ ou 24. Le SDK et l’image sont les seules entrées nécessaires à l’exécution.
Transmettez les informations d’identification au processus par des variables d’environnement. L’historique du shell, l’inspection des processus, les journaux de CI et la politique de la machine locale déterminent si les affectations de variables d’environnement directement dans la commande sont appropriées. Utilisez donc votre gestionnaire de secrets habituel en production. La commande présentée ici est volontairement locale et de courte durée.
mkdir transloadit-quickstart
cd transloadit-quickstart
npm init -y
npm pkg set type=module
npm install @transloadit/nodeUne dépendance
@transloadit/node gère l’authentification, le téléversement de fichiers, l’interrogation périodique du statut et les réponses typées.
Exécution native de TypeScript
Exécute directement le fichier TypeScript tout en conservant un exemple typé que vous pouvez copier-coller.
Aucun fichier de secrets requis
Le guide de démarrage rapide lit les deux informations d’identification dans l’environnement du processus.
Exécuter la première Assembly
Enregistrez le code TypeScript ci-dessous dans quickstart.ts. Le Step :original accepte le téléversement. Le Step resized désigne :original dans use : il démarre donc après que le téléversement a produit un fichier. Son paramètre resize_strategy vaut fit, ce qui préserve les proportions et limite chacune des deux dimensions à 400 pixels au lieu de recadrer l’image en carré.
Lorsque waitForCompletion est activé, createAssembly renvoie sa réponse une fois que l’Assembly atteint un état final. Ce comportement bloquant rend le premier résultat évident, mais constitue une facilité pédagogique plutôt qu’une architecture par défaut pour les vidéos lentes à traiter, les lots volumineux ou un gestionnaire de requêtes avec un délai d’expiration court.
import { Transloadit } from '@transloadit/node'
async function main(): Promise<void> {
const authKey = process.env.TRANSLOADIT_KEY
const authSecret = process.env.TRANSLOADIT_SECRET
const inputPath = process.argv[2]
if (authKey == null || authSecret == null || inputPath == null) {
throw new Error(
'Set TRANSLOADIT_KEY and TRANSLOADIT_SECRET, then pass an image path.',
)
}
const transloadit = new Transloadit({ authKey, authSecret })
const assembly = await transloadit.createAssembly({
files: { image: inputPath },
params: {
steps: {
':original': {
robot: '/upload/handle',
},
resized: {
use: ':original',
robot: '/image/resize',
result: true,
width: 400,
height: 400,
resize_strategy: 'fit',
},
},
},
waitForCompletion: true,
})
const result = assembly.results?.resized?.[0]
if (result == null) {
throw new Error(`Assembly ${assembly.assembly_id} produced no resized result.`)
}
console.log(`Result: ${result.ssl_url}`)
console.log(`Assembly: ${assembly.assembly_id}`)
}
main().catch((error: unknown) => {
if (!(error instanceof Error)) {
throw new Error(`Was thrown a non-error: ${error}`)
}
console.error(error.message)
process.exit(1)
})env \
TRANSLOADIT_KEY="YOUR_TRANSLOADIT_KEY" \
TRANSLOADIT_SECRET="YOUR_TRANSLOADIT_SECRET" \
node quickstart.ts ./your-image.jpg:original
Le Step réservé au téléversement qui rend les fichiers entrants accessibles aux Robots suivants.
resized
Un nom choisi par l’intégration ; il devient aussi la clé utilisée pour lire ces fichiers de résultat.
fit
Limite les dimensions de sortie sans étirer ni supprimer le contenu de l’image.
Examiner le résultat au-delà du statut de réussite
Ouvrez l’URL HTTPS du résultat affichée et vérifiez que les dimensions et le contenu visible correspondent à la demande. Ouvrez ensuite l’Assembly dans la Transloadit Console à l’aide de son identifiant. Assembly Status affiche les téléversements, les résultats des Steps, les horodatages, les métadonnées et les éventuelles erreurs. C’est donc le premier endroit où comparer ce que l’application a demandé avec ce que la plateforme a exécuté.
Conservez l’identifiant de l’Assembly à côté de votre propre identifiant de tâche ou de ressource. Une URL seule ne suffit pas pour le dépannage, car elle n’indique pas quels paramètres, quelle entrée ou quel Step l’ont produite. En production, conservez durablement les champs de résultat précis dont votre application a besoin plutôt que de stocker ou de renvoyer intégralement une réponse brute provenant d’une entité externe.
Vérification visuelle
Confirme que le flux de travail a produit la variante attendue, et pas seulement un code de statut de réussite.
Assembly Status
Fournit la trace du traitement et les métadonnées nécessaires au débogage et au rapprochement des états.
Enregistrement dans l’application
Relie l’identifiant externe de l’Assembly à l’utilisateur, à l’entrée et à l’action métier qui l’ont déclenchée.
Transformer la preuve de concept en intégration de production
Les fichiers temporaires des Assemblies sont conservés pendant environ 24 heures et sont destinés à un nombre limité de récupérations à court terme, pas à être servis directement aux utilisateurs finaux. Pour qu’un résultat soit conservé durablement, ajoutez un Robot d’exportation tel que /s3/store, /azure/store, ou la destination appartenant à votre application. Stockez les clés cloud dans des ensembles d’informations d’identification de Template, et non sous forme de valeurs littérales dans le code de l’application ou les Assembly Instructions.
Ensuite, enregistrez les Steps dans un Template, définissez allow_steps_override sur false lorsque les appelants ne doivent pas modifier le graphe, et envoyez uniquement son template_id ainsi que les champs validés. Les téléversements depuis le navigateur nécessitent des paramètres signés à durée de validité limitée, générés par un backend. Le traitement en arrière-plan devrait renvoyer immédiatement un identifiant de tâche de l’application, traiter un webhook vérifié, accepter sans risque les réceptions répétées et effectuer un rapprochement avec Assembly Status lorsqu’une notification est manquée.
Exportation permanente
Transfère les résultats vers un stockage que vous possédez pour les soustraire à la durée de conservation temporaire par défaut.
Template enregistré
Maintient le contrôle du graphe de traitement tandis que les intégrations transmettent un identifiant de Template compact.
Achèvement vérifié
Un webhook signé et un rapprochement périodique des états permettent de reprendre les tâches de longue durée.
Exposer un statut sûr, protéger les diagnostics et conserver un test de bon fonctionnement
Une interface de production devrait afficher un état concis défini par l’application, tel que « en attente », « en cours de traitement », « prêt » ou « échec ». Les opérateurs ont néanmoins besoin d’un accès protégé reliant cet enregistrement à l’identifiant de l’Assembly et à des diagnostics expurgés des données sensibles. Ne renvoyez aux utilisateurs finaux ni erreurs brutes de fournisseurs, ni traces de pile, ni réponses de services de stockage, ni URL contenant des informations d’identification au seul motif que le guide de démarrage rapide affiche un résultat dans un terminal.
Conservez une toute petite image dont la validité est établie et les contraintes de sortie attendues pour constituer un test de bon fonctionnement. Exécutez-le après une rotation des informations d’identification ou une modification contrôlée du flux de travail, mais n’intégrez pas une Assembly externe payante à chaque exécution des tests unitaires. Les tests unitaires devraient valider la politique locale et les correspondances, tandis qu’une vérification d’intégration explicite valide conjointement les informations d’identification réelles, le téléversement, le Robot et le parcours du résultat.
État sûr côté client
Exposez un statut permettant d’agir sans divulguer une réponse tierce ou une exception interne.
Trace protégée
Permettez aux opérateurs autorisés d’accéder à l’identifiant de l’Assembly et aux diagnostics nécessaires à l’investigation.
Donnée de test dont la validité est établie
Distingue les défaillances de l’intégration réelle des médias inhabituels fournis par les clients lorsque le parcours est testé.
Détails techniques à connaître
- Une Assembly correspond à une exécution des Assembly Instructions. Chaque Step de traitement appelle un Robot et déclare son entrée en amont avec
use; le Step:original, réservé au téléversement, constitue la source et ne prend aucunuse. - Le SDK Node génère l’authentification des requêtes à partir de l’Auth Key et de l’Auth Secret. Le secret doit se trouver uniquement dans un processus serveur de confiance, jamais dans le JavaScript du navigateur ni dans une application mobile.
- Définir
waitForCompletionsur true conduit le SDK à interroger périodiquement le statut jusqu’à ce que l’Assembly atteigne un état final. C’est pratique pour une première exécution de petite taille, mais inadapté aux gestionnaires de requêtes de longue durée. - L’indicateur
resultmarque les fichiers d’un Step pour qu’ils soient inclus dans l’objetresultsau niveau racine de l’Assembly. Il ne rend pas les fichiers permanents. - Par défaut, les fichiers temporaires des Assemblies sont disponibles pendant environ 24 heures et pour un nombre limité de récupérations. Ne servez pas leurs URL directement aux utilisateurs finaux ; ajoutez un Robot d’exportation pour les fichiers destinés aux utilisateurs.
- L’identifiant de l’Assembly constitue une référence utile pour le débogage, même lorsqu’une application stocke son propre identifiant de tâche de plus haut niveau.
Une approche pratique
- 1
Créez une Auth Key et choisissez une petite image locale.
- 2
Installez le SDK Node et exécutez l’exemple de démarrage rapide TypeScript avec les informations d’identification dans l’environnement.
- 3
Ouvrez l’URL du résultat affichée et examinez l’Assembly dans la Console.
- 4
Transférez le flux de travail dans un Template enregistré et ajoutez un stockage permanent avant toute utilisation en production.
Quand Transloadit est utile
Utilisez le SDK Node pour créer une Assembly contenant /upload/handle et /image/resize. Le SDK signe la requête avec des informations d’identification côté serveur, téléverse le fichier local, attend la fin du traitement et renvoie l’URL du résultat ainsi que l’identifiant de l’Assembly.
Périmètre architectural
Ce guide de démarrage rapide s’exécute sur un serveur de confiance et attend la fin du traitement d’une seule petite image. Une intégration dans le navigateur doit recevoir d’un backend des paramètres signés à courte durée de validité, tandis que les traitements en arrière-plan en production devraient utiliser un webhook vérifié au lieu de maintenir une requête HTTP ouverte.
Questions fréquentes
Puis-je placer l’Auth Secret dans le JavaScript du navigateur pour ce guide de démarrage rapide ?
Non. L’exemple s’exécute côté serveur. Le navigateur devrait demander des paramètres d’Assembly signés à courte durée de validité à un backend qui garde l’Auth Secret confidentiel.
Pourquoi le script attend-il la fin du traitement ?
waitForCompletion facilite la vérification d’une première exécution en renvoyant le résultat terminé. En production, les gestionnaires de requêtes devraient normalement lancer le traitement en arrière-plan et utiliser un webhook vérifié ou une interrogation périodique contrôlée de l’état.
Où l’image redimensionnée est-elle stockée ?
Il s’agit d’un résultat temporaire d’Assembly conservé pendant 24 heures par défaut. Ajoutez un Robot de stockage pour le conserver de façon permanente dans une destination que vous contrôlez.
Pourquoi utiliser fit plutôt que fillcrop ?
fit préserve l’image entière et la fait tenir dans le cadre demandé. fillcrop remplit les dimensions exactes par recadrage, ce qui exige un choix délibéré de composition.
Que dois-je enregistrer après la fin de l’Assembly ?
Enregistrez l’identifiant de l’Assembly, votre propre identifiant de tâche ou de ressource, les métadonnées du résultat sélectionné et son emplacement de stockage durable, ainsi qu’un état final nettoyé. N’exposez pas par défaut l’intégralité de la réponse brute aux clients.