web-dev-qa-db-fra.com

Appels API simples avec Node.js et Express

Je ne fais que commencer avec Node, les API et les applications Web.

Je comprends le fonctionnement de base de Node.js et Express, mais maintenant je veux commencer à appeler les API d'autres services et faire des trucs avec leurs données.

Pouvez-vous décrire les requêtes HTTP de base et comment récupérer/analyser les réponses dans Node? Je suis également intéressé à ajouter des en-têtes spécifiques à ma demande (au départ, j'utilise l'API http://www.getharvest.com pour analyser mes données de feuille de temps).

P.S. Cela semble simple, mais beaucoup de recherches n'ont pas permis de répondre à ma question. Si c'est dupe, faites-le moi savoir et je le supprimerai.

Merci!

47
John

Vous ne pouvez pas aller chercher des trucs avec Express, vous devez utiliser la bibliothèque request de Mikeal dans ce but spécifique.

L'API de cette bibliothèque est très simple:

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Print the google web page.
  }
})

Edit: Vous êtes préférable d'utiliser cette bibliothèque au lieu de celle par défaut http car elle a une API beaucoup plus agréable et des fonctionnalités plus avancées (elle prend même en charge les cookies).

51
alessioalex

Vous pouvez utiliser le client http:

var http = require('http');
var client = http.createClient(3000, 'localhost');
var request = client.request('PUT', '/users/1');
request.write("stuff");
request.end();
request.on("response", function (response) {
  // handle the response
});

En outre, vous pouvez définir des en-têtes comme décrit dans la documentation api :

client.request(method='GET', path, [request_headers])
5
Nicolas Modrzyk

Installation requise de deux packages.

npm install ejs 
npm install request

server.js

var request = require('request');
app.get('/users', function(req, res) {
    request('https://jsonplaceholder.typicode.com/users', function(error, response, body) {
        res.json(body)
    });
});

index.ejs

$.ajax({
    type: "GET",
    url: 'http://127.0.0.1:3000/posts',
    dataType: "json",
    success: function(res) {
        var res_data = JSON.parse(res);
        console.log(res_data);
    }
});

Sortie

enter image description here

3
Ram Pukar