Lancement du nouveau SDK Node.js v3 : amélioré et convivial
Cela fait presque sept ans que nous avons
annoncé pour la première fois notre SDK Node.js. Depuis, le
SDK a considérablement évolué, tout comme le langage JavaScript dans son ensemble. Aujourd’hui, les
développeurs apprécient la simplicité des nouvelles fonctionnalités qu’apporte le JavaScript moderne,
comme les promesses ou les fonctions await et async. Pour suivre les standards, nous avons réécrit le SDK
afin qu’il utilise ces nouvelles fonctionnalités par défaut. Cette refonte nous a obligés à publier une
nouvelle version majeure comportant des changements incompatibles, mais nous espérons que vous
conviendrez que cela en valait la peine ! Vous pouvez toujours utiliser des callbacks, mais il vous
faudra « callbackifier » les méthodes vous-même.

Nouvelles fonctionnalités
- Nouvelle API Promise plus simple à utiliser
- Permet de téléverser des
Streams, desstringset plus encore - Définitions TypeScript
- Gestion des erreurs et logique de nouvelle tentative améliorées
- Code asynchrone interne plus facile à déboguer et à lire
- De nombreux correctifs et améliorations
Comme cette version contient des changements incompatibles de l’API, nous en avons profité pour effectuer également une refonte majeure et une stabilisation de notre SDK. Nous avons essayé de garder une API similaire à la version précédente, mais il y a quelques changements dont vous devez tenir compte.
Changements incompatibles
-
Toutes les méthodes qui acceptaient auparavant un callback renvoient désormais une promesse et n’acceptent plus de callback.
-
Nécessite Node v10 ou une version plus récente.
-
replayAssembly(opts)est remplacé parreplayAssembly(assemblyId, params)(auparavant,assemblyIdétait une clé deopts) :-replayAssembly(opts, callback) +await replayAssembly(assemblyId, params) -
replayAssemblyNotification(opts)est remplacé parreplayAssemblyNotification(assemblyId, params)(auparavant,assemblyIdétait une clé deopts) :-replayAssemblyNotification(opts, callback) +await replayAssemblyNotification(assemblyId, params) -
deleteAssemblyest renommé encancelAssemblypour refléter la terminologie de l’API sous-jacente. -
Suppression de l’option non documentée
fields(directement souscreateAssembly(opts)). Veuillez plutôt utiliser la cléfieldsdansparams. -
Modification des callbacks de progression de
createAssembly:// Before: createAssembly({ params: { ... }, fields: { field1: 'val' }, }, callback, progressCb) // Now: await createAssembly({ params: { fields: { field1: 'val' }, }, onUploadProgress, onAssemblyProgress, })Consultez également le fichier README.
-
Le délai d’expiration par défaut des requêtes passe de
5à60secondes. -
Renvoie désormais depuis
waitForCompletionle résultat de l’Assembly au lieu de lever une erreur inconnue siresult.okvautASSEMBLY_CANCELEDouREQUEST_ABORTED. -
Remplacement, dans
constructor, des optionsuseSsletserviceparendpoint:// Before: useSsl: true, service: 'api2.transloadit.com' // Now: endpoint: 'https://api2.transloadit.com'
createAssembly déclaratif
addFile et addStream ont été supprimés et font désormais partie de createAssembly :
// Before:
transloadit.addFile('file1', '/path/to/file')
// Add other files as needed.
transloadit.createAssembly({ /* additional options */ })
// Now:
transloadit.createAssembly({
files: {
file1: '/path/to/file',
// Other named files.
},
// Additional options.
})
// Before:
transloadit.addStream('file2', process.stdin)
// Add other streams as needed.
transloadit.createAssembly({ /* additional options */ })
// Now:
transloadit.createAssembly({
uploads: {
file2: process.stdin,
// Other named streams.
},
// Additional options.
})
Logique de nouvelle tentative automatique
RATE_LIMIT_REACHEDne réessaie désormais automatiquement que cinq fois. L’ancienne logique de nouvelle tentative était trop agressive : elle réessayait pour presque toutes les erreurs, même irrécupérables, par exempleINVALID_FILE_META_DATA.- Le SDK ne réessaiera plus automatiquement si
assembly_url == nullouassembly_ssl_url == null. Il lèvera plutôt une erreurTransloadit.InconsistentResponseError.
Erreurs
Les erreurs levées par le SDK ont changé :
- Lorsqu’un code de réponse HTTP d’échec est reçu, l’erreur sera désormais un objet Transloadit.HTTPError (auparavant un objet Error ordinaire) avec une propriété supplémentaire transloaditErrorCode (le cas échéant).
- Les messages d’erreur ont été améliorés.
Error: la propriétéerrora été renommée entransloaditErrorCode.Error: la propriétéassembly_ida été renommée enassemblyId.- Toutes les autres propriétés de la réponse JSON de Transloadit ne sont plus ajoutées directement
à l’objet
Error, mais se trouvent désormais dansHTTPError.response?.body, par exemplecatch (err) { err.response?.body?.assembly_id }. Notez queerr.responsevaudraundefinedpour les erreurs qui ne proviennent pas du serveur. - Attend désormais aussi le statut
ASSEMBLY_REPLAYINGdanswaitForCompletion. - Les Assemblies présentant un statut d’erreur (
assembly.error, mais renvoyant HTTP 200) entraîneront aussi la levée d’une erreur lors de l’appel àreplayAssembly, par cohérence aveccreateAssembly. - Lorsque
result.okest indéfini, une erreurUnkown errorn’est plus levée pour createTemplate et editTemplate. - Les réponses HTTP 404 du serveur lèvent désormais une erreur
Transloadit.HTTPError(auparavant, une réponse 404 donnait un résultat positif).
C’est tout pour aujourd’hui !
Consultez la documentation et les exemples suivants pour bien démarrer avec notre SDK Node.js v3, nouveau et amélioré ! Nous espérons que cette annonce vous sera utile, et nous avons hâte de voir comment elle aidera vos projets. Et comme toujours, si vous avez des retours, faites-le-nous savoir !
