Come effettuare richieste HTTP esterne con Node.js [chiuso]


84

La domanda è abbastanza semplice. Desidero utilizzare un server Node.js come proxy per registrare, autenticare e inoltrare query HTTP a un server HTTP back-end (richieste PUT, GET e DELETE).

Quale libreria dovrei usare a tale scopo? Ho paura di non trovarne uno.

Risposte:


136

NodeJS supporta http.request come modulo standard: http://nodejs.org/docs/v0.4.11/api/http.html#http.request

var http = require('http');

var options = {
  host: 'example.com',
  port: 80,
  path: '/foo.html'
};

http.get(options, function(resp){
  resp.on('data', function(chunk){
    //do something with chunk
  });
}).on("error", function(e){
  console.log("Got error: " + e.message);
});

10
Consiglierei di aggiungere resp.setEncoding('utf8');(o qualunque codifica tu stia usando) per ottenere i dati come stringhe utf8. Se ho capito bene, altrimenti otterrai oggetti Buffer e potresti finire per avere problemi con caratteri multibyte se un carattere multibyte viene diviso in due blocchi. (Ho appena eseguito il debug di un problema correlato per un po ')
Touko

8
In realtà ho iniziato a usare requestmolto di più il modulo npm.
chovy

7

Combinerei node-http-proxy ed express .

node-http-proxy supporterà un proxy all'interno del tuo server web node.js tramite RoutingProxy(vedi l'esempio chiamato Richieste proxy all'interno di un altro server http ).

All'interno della logica del server personalizzato è possibile eseguire l'autenticazione utilizzando Express. Vedi l' esempio di autenticazione qui per un esempio .

La combinazione di questi due esempi dovrebbe darti quello che vuoi.


5

Puoi usare il httpmodulo integrato per eseguire un file http.request().

Tuttavia, se vuoi semplificare l'API puoi usare un modulo come superagent


3
Un'API molto più sana davvero. Non incolpo il nodo per aver fornito solo API di basso livello, ma iniziare a gestire blocchi di dati è semplicemente fastidioso.
Laurent Bourgault-Roy

1

node-http-proxy è un'ottima soluzione come suggerito da @hross sopra. Se non sei deadset sull'uso di node, usiamo NGINX per fare la stessa cosa. Funziona davvero bene con node. Lo usiamo ad esempio per elaborare le richieste SSL prima di inoltrarle al nodo. Può anche gestire la cache e le rotte di inoltro. Sìì!


0

Puoi usare il modulo http node.js per farlo. È possibile controllare la documentazione su Node.js HTTP .

Dovresti passare la stringa di query anche all'altro server HTTP. Dovresti averlo in ServerRequest.url .

Una volta che hai queste informazioni, puoi passare il server HTTP di backend e la porta nelle opzioni che fornirai nel file http.request()

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.