2017-03-29 2 views
0

Also habe ich mit requestjs begonnen, die ich mit glücklich bin, aber ich frage mich, ob es irgendeine Art und Weise mit dem Rohr in einer Art und Weise ist, wie Sie mit dem Versprechen tun würde:Piping die json Körper nur mit requirejs

function foo(url) { 
    return request({ "url": url, "json": true }) 
} 
let result = foo("https://jsonplaceholder.typicode.com/posts/1") 
result.pipe(process.stdout) 
result.on('data', console.log) 
  • mit pipe ich selbst nicht auf das Objekt zugreifen kann, so kann ich den Körper
  • nicht nur streamen und auf meine Spezifikation die Antwort zu analysieren nicht respektiert

also JSon ich kann nicht u se irgendwelche von denen, um nur auf den json zuzugreifen, den ich empfange. Natürlich kann ich JSON.parse verwenden, aber ich bin auf der Suche nach einem einfacheren Weg, um auf die Antwort zu reagieren (ähnlich wie Versprechen) und ich fühle mich wie ich das große Bild vermisse.

Antwort

1

Gibt es einen Grund, warum Sie Streams verwenden müssen? Sie können die Anforderung immer in ein Versprechen einbetten.

Dies ist ein sehr hohes Niveau, aber hoffentlich kann Sie das auf den richtigen Weg bringen.

function makeRequest(params) { 
    return Promise((resolve, reject) => { 
    request(params, (err, response) => { 
     if (err) { 
     return reject(err); 
     } 
     return resolve(response); 
    }; 
    }); 
} 


const params = { 
    url: 'foo.com', 
    method: 'GET', 
    json: true, 
}; 

makeRequest(params) 
    .then(response => { 
    if (response.statusCode === 200) { 
     return Promise.resolve(response.body); 
    } else if (response.statucCode === 404) { 
     const err = { 
     message: 'Not Found', 
     code: 404, 
     }; 
     return Promise.reject(err); 
    } 
    }) 
    .then(body => // do something fun with data) 
    .catch(err => // handle error);