2017-10-15 1 views
1

Ce que je cherchais à faire est de faire une requête GET puis de manipuler le magasin de données JSON dans une variable, puis de faire une requête PUT. Impossible de trouver de la documentation à ce sujet. Peut-être que je pense à ce tort. Une fois que j'ai la variable, je veux faire quelque chose comme ci-dessous. J'ai toutes mes données de la demande GET enregistrées dans un fichier outputV3.json.Données de flux de la variable vers la requête PUT

var outputJson = fs.readFileSync("outputV3.JSON"); 
outputJson = JSON.parse(outputJson); 

(function() { 
    for (let i = 0; i < outputJson.objects.length; i++) { 
    let postId = outputJson.objects[i].id.toString(); 
    let newSlug = outputJson.objects[i].slug.replace("blog/", ""); 
    let urlToPut = "https://api.hubapi.com/content/api/v2/blog-posts?limit=1000&hapikey=" + process.env.HAPIKEY; 

    urlToPut = urlToPut.replace("blogPostId", postId); 

    let put_data = JSON.stringify({ 
     "slug": newSlug 
    }); 

    put_data.put(urlToPut); 
    } 
}); 
+0

Salut @ James Zich. Si cette réponse ou toute autre réponse a résolu votre question, veuillez considérer [l'accepter] (https://meta.stackexchange.com/q/5234/179419) en cliquant sur la coche. Ceci indique à la communauté plus large que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation de le faire, cependant, j'ai remarqué tout au long de l'histoire de vos posts que vous n'annulez aucune réponse, ce qui n'est pas le fonctionnement du SO. – Nevertheless

Répondre

0

Si vous avez besoin de diffuser vos données de fichier à demander, vous devez créer read stream à partir du fichier et pipe à la destination:

const dataStream = fs.createReadStream('outputV3.JSON'); 

const options = { 
    hostname: 'www.example.com', 
    port: 80, 
    path: '/destination', 
    method: 'PUT', 
    headers: { 
    'Content-Type': 'application/json', 
    } 
}; 

const req = http.request(options, (res) => { 
    // response processing... 
}); 

dataStream.pipe(req); 

Et si vous avez besoin logique plus avancé pour vous le streaming Vous devriez envisager de mettre un flux personnalisé Transform entre un flux de fichier lisible et un flux de requête accessible en écriture.

1

Si je voulais utiliser demande-promesse que je pouvais faire quelque chose comme ce qui suit

let options = { 
uri: 'https://api.hubapi.com/content/api/v2/blog-posts?limit=1000&hapikey=' + process.env.HAPIKEY, 
method: 'GET' 
transform: function (body, response) { 
    return for(var i=0; i<outputJson.objects.length; i++) { 
    var postId = outputJson.objects[i].id.toString(); 
    var newSlug = outputJson.objects[i].slug.replace("blog/",""); 
} 
}; 

rp(options) 
.then(function(removedSlug) { 
.pipe(request.put('https://api.hubapi.com/content/api/v2/blog- 
posts/blogPostId?hapikey=' + process.env.HAPIKEY)) 
});