Fermer

mai 2, 2024

Utilisation de l’API Optimizely Content Delivery pour la migration des données / Blogs / Perficient

Utilisation de l’API Optimizely Content Delivery pour la migration des données / Blogs / Perficient


L’API Optimizely Content Delivery est très connue pour créer des CMS sans tête, pour se connecter à des applications à page unique, des applications mobiles, etc. Cependant, j’ai également trouvé que cela s’avère utile en termes de migration de données. Avec l’API Content Delivery, vous pouvez facilement récupérer des informations détaillées sur le contenu source au format JSON et les mapper à votre application cible. Dans cet article, je donnerai une brève instruction sur la façon de migrer des données entre les applications Optimizely Content Cloud à l’aide de l’API.

Conditions préalables

L’API Content Delivery et l’API Content Search doivent être installées et configurées correctement dans votre application source.

Note:

L’API de recherche de contenu nécessitera la politique CORS pour pouvoir fonctionner. Pour en savoir plus sur les configurations, veuillez vous référer à ce document pour plus de détails. Vous devez également réindexer le site après l’installation.

Migration de pages/blocs

Une fois l’API Content Delivery installée dans l’application source, nous créerons quelque chose comme une tâche planifiée dans l’application cible. Le travail extraira les dernières données de l’application source en appelant l’API, puis les mappera aux nouveaux types de contenu de l’application cible.

Pour récupérer une liste de contenu par type spécifique (par exemple ProductPage), appelez cette API avec haut et sauter paramètres de pagination :

https://yoursite.com/api/episerver/v3.0/search/content?filter=ContentType/any(t:t eq 'ProductPage')&top=10&orderby=name&skip=10

Note:

La version de l’API REST de l’API Content Delivery utilisée dans cet exemple est 3.0.0.

Une fois la chaîne JSON renvoyée désérialisée dans une liste d’objets C#, vous pouvez parcourir la liste et effectuer le mappage avec les propriétés de votre nouveau type de contenu.

Migration de fichiers multimédias

Le concept de migration de média est le même que celui de migration de pages/blocs, mais avec une étape supplémentaire. Vous devez enregistrer le fichier source de l’URL en tant que flux, puis l’écrire dans le blob. Cet extrait de code ci-dessous migre un seul fichier PDF vers la destination cible.

// Create a new PDF, name it after the sourceDocument
var pdfFile = _contentRepository.GetDefault<PdfFile>(parentFolderReference);
pdfFile.Name = sourceDocument.Name;

// Create a blob in the binary container
var blob = _blobFactory.CreateBlob(pdfFile.BinaryDataContainer, ".pdf");

// using System.Net.Http.HttpClient to get the stream from sourceDocument's url
var resultStream = httpClient.GetStreamAsync(sourceDocument.Url).Result;

// write the stream directly to blob and Assign to the file
blob.Write(resultStream);
pdfFile.BinaryData = blob;


// TODO Mapping properties

// Publish the file
var pdfRef =  _contentRepository.Save(pdfFile, SaveAction.Publish, AccessLevel.NoAccess);

Conclusion

En matière de migration de données, chaque projet pose son propre problème. Le but de cet article est simplement d’ajouter une autre option, afin que nous puissions déterminer si elle est adaptée ou non à la tâche. Tout comme d’autres, cette approche a aussi des avantages et des inconvénients.

Accessoires

  • Vous n’avez pas besoin de créer de logique ni de points de terminaison d’API pour la migration au niveau de l’application source. Il suffit d’installer les packages et c’est suffisant dans la plupart des cas.
  • Si vous extrayez des données du site en direct, le contenu sera toujours le plus récent. Vous n’avez pas besoin d’exporter la base de données de production à chaque fois que vous exécutez la migration.

Les inconvénients

  • Pour des raisons de sécurité, vous souhaiterez peut-être authentifier l’API ainsi que configurer la stratégie CORS.
  • Lorsque la migration des données est en cours d’exécution, cela peut affecter les performances du site source. Pensez donc à exécuter le travail en dehors des heures de bureau et à appliquer une pagination à vos requêtes, etc.






Source link