Appeler d'autres API HTTP avec RESTBuilder
RESTBuilder.GET(url), .POST(url, data), .PUT, .PATCH et .DELETE construisent une requête. Les données d'un POST sont envoyées en JSON. Enchaînez .header(name, value), .cookie(name, value), .timeout(milliseconds) et .auth(user, password) avant .exec(function(err, response, output) {}) (ou .promise() pour await).
responseest le body, analysé automatiquement quand c'est du JSONoutput.statusest le statut HTTP etoutput.headersles en-têtes de la réponseerrest renseigné pour les erreurs réseau et pour les statuts HTTP d'erreur
L'exemple appelle deux routes de sa propre application pour pouvoir s'exécuter partout ; dans votre code, utilisez l'adresse du vrai service. $.hostname(path) construit l'URL complète de ce serveur.
exports.install = function() {
ROUTE('GET /api/hello/', hello);
ROUTE('POST /api/sum/', sum);
ROUTE('GET /call/', call);
};
function hello($) {
$.json({ message: 'hello', agent: $.headers['x-agent'] || null });
}
function sum($) {
$.json({ sum: $.body.a + $.body.b });
}
async function call($) {
var greeting = await RESTBuilder.GET($.hostname('/api/hello/')).header('x-agent', 'forge').timeout(5000).promise();
var total = await RESTBuilder.POST($.hostname('/api/sum/'), { a: 20, b: 22 }).promise();
RESTBuilder.GET($.hostname('/api/missing/')).exec(function(err, response, output) {
$.json({ greeting: greeting, total: total, missing: output.status });
});
}