2011-11-01 3 views
75

질문은 매우 간단합니다. Node.js 서버를 프록시로 사용하여 HTTP 쿼리를 백엔드 HTTP 서버 (PUT, GET 및 DELETE 요청)에 기록, 인증 및 전달합니다.Node.js로 외부 HTTP 요청을 작성하는 방법

그 목적으로 어떤 라이브러리를 사용해야합니까? 나는 내가 그것을 찾을 수없는 것이 두렵다.

답변

121

NodeJS는 표준 모듈로 http.request을 지원 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

'resp.setEncoding ('utf8');'(또는 여러분이 사용하고있는 인코딩)을 추가하여 utf8 문자열로 데이터를 가져 오는 것이 좋습니다. 내가 제대로 이해했다면, 그렇지 않으면 버퍼 객체를 얻게 될 것이고 멀티 바이트 문자가 두 개의 청크로 나뉘면 멀티 바이트 문자로 문제가 발생할 수 있습니다. (그냥 잠시 동안 관련 문제를 디버그했다.) – Touko

+7

나는 실제로'request' npm 모듈을 더 많이 사용하기 시작했다. – chovy

0

node.js http 모듈을 사용하여이를 수행 할 수 있습니다. Node.js HTTP에서 설명서를 확인할 수 있습니다.

다른 HTTP 서버에도 쿼리 문자열을 전달해야합니다. 당신은 ServerRequest.url에 있어야합니다. 당신이 그 정보가 있으면

, 당신은 당신이 내가 node-http-proxyexpress을 결합 할 것 http.request()

7

에 제공 할 옵션에서 백엔드 HTTP 서버 및 포트에 전달할 수 있습니다.

노드 HTTP 프록시는 RoutingProxy 통해 Node.js를 웹 서버 내부 프록시 (라고 다른 HTTP 서버 내에서 프록시 요청 예제 참조)을 지원합니다.

사용자 정의 서버 로직 내에 express를 사용하여 인증을 수행 할 수 있습니다. auth sample here for an example을 참조하십시오.

두 예제를 결합하면 원하는 것을 얻을 수 있습니다.

4

내장 된 http 모듈을 사용하여 http.request()을 수행 할 수 있습니다. 위의 @hross에 의해 제안 된대로 superagent

+3

많은 온건 API를하는 데 도움이됩니다. 낮은 수준의 API 만 제공하는 노드를 비난하지는 않지만 데이터 덩어리를 처리하기 시작하는 것은 간단합니다. –

1

노드 HTTP 프록시은 훌륭한 솔루션입니다 같은

그러나 당신은 모듈을 사용할 수있는 API를 단순화하려는 경우. 노드를 사용할 때 데드 세트가 발생하지 않으면 동일한 작업을 수행하기 위해 NGINX을 사용합니다. 그것은 노드와 잘 작동합니다. 예를 들어 SSL 요청을 노드로 전달하기 전에 처리합니다. 또한 캐시 및 전달 경로를 처리 할 수 ​​있습니다. 예!

7

는 최근 REQUESTIFY을 발견했다.

GET 요청 : JSON으로

requestify.get('http://example.com').then(function(response) { 
    // Get the response body 
    response.getBody(); 
}); 

포스트 :

requestify.post('http://example.com', { 
     hello: 'world' 
    }) 
     .then(function(response) { 
      // Get the response body (JSON parsed or jQuery object for XMLs) 
      response.getBody(); 

      // Get the raw response body 
      response.body; 
     }); 

희망이 참

관련 문제