Pipeline HTTP + JSON
Récupère une liste de posts depuis l’API publique JSONPlaceholder, parse la réponse JSON et écrit le résultat dans un fichier local. Cet exemple n’utilise aucun modèle avec état — chaque opération est une connexion de dataflow pur ordonnancée par Mélodium au fur et à mesure que les données sont disponibles.
Exécution
melodium run 04_http_json_pipeline/Compo.toml
# ou avec un chemin de sortie personnalisé :
melodium run 04_http_json_pipeline/Compo.toml --output results.txtSortie attendue :
[…] info: pipeline: fetching posts...
[…] info: pipeline: doneLe fichier results.txt est écrit avec le corps JSON brut de la réponse API.
Fonctionnement
main démarre deux sous-traitements en parallèle dès que startup se déclenche : logFetch journalise un message de statut, et fetchPosts effectue la requête HTTP GET. Une fois le corps de la réponse disponible en tant que Stream<byte>, il s’écoule dans parsePosts.
parsePosts est un sous-traitement qui enchaîne quatre opérations en une seule instruction de connexion :
Self.data -> decode.data,text -> toJson.text,json -> unwrapOr.option,value -> toString.value,into -> Self.textdecodeconvertit le flux d’octets en texte UTF-8toJsonparse le texte en JSON, émettantOption<Json>unwrapOr<Json>(default=|null())remplace un échec de parsing parnullplutôt que d’interrompretoString<Json>()sérialise la valeur en chaîne simple pour l’écriture
Une fois l’écriture terminée, writePosts.finished déclenche logDone.
Dépendances
[dependencies]
std = "0.10.1" # flux de base, journalisation, structures de données
http = "0.10.1" # serveur et client HTTP
json = "0.10.1" # parsing et sérialisation JSON
fs = "0.10.1" # lecture/écriture de fichiers locaux
encoding = "0.10.1" # encodage / décodage UTF-8