Node.js로 외부 HTTP 요청을 만드는 방법 [닫힌]


84

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

그 목적으로 어떤 라이브러리를 사용해야합니까? 찾을 수 없습니다.

답변:


136

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 문자열로 가져 오기 위해 추가 (또는 사용중인 인코딩)를 권장 합니다. 내가 옳게 이해했다면, 그렇지 않으면 Buffer 객체가 생기고 멀티 바이트 문자가 두 개의 청크로 분할되면 멀티 바이트 문자에 문제가 생길 수 있습니다. (그냥 잠시 관련 문제를 디버깅했습니다)
Touko

8
실제로 requestnpm 모듈을 더 많이 사용하기 시작했습니다 .
chovy

7

나는 node-http-proxy를 결합 하고 표현할 것입니다. .

node-http-proxy는 다음을 통해 node.js 웹 서버 내의 프록시를 지원합니다 RoutingProxy( 다른 http 서버 내의 프록시 요청 이라는 예제 참조). ).

사용자 정의 서버 로직 내에서 Express를 사용하여 인증을 수행 할 수 있습니다. 예제는 여기 에서 인증 샘플을 참조하십시오 .

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


5

내장 http모듈을 사용하여 http.request().

그러나 API를 단순화하려면 superagent 와 같은 모듈을 사용할 수 있습니다.


3
실제로 훨씬 더 건전한 API. 저수준 API 만 제공하는 노드를 비난하지는 않지만 데이터 덩어리를 처리하기 시작하는 것은 평범한 성가신 일입니다.
Laurent Bourgault-Roy

1

node-http-proxy는 위의 @hross가 제안한 훌륭한 솔루션입니다. 노드 사용에 문제 가 없다면 NGINX 를 사용 하여 동일한 작업을 수행합니다. 그것은 노드와 정말 잘 작동합니다. 예를 들어 SSL 요청을 노드로 전달하기 전에 처리하는 데 사용합니다. 또한 캐시 및 전달 경로를 처리 할 수 ​​있습니다. 예이!


0

이를 위해 node.js http 모듈을 사용할 수 있습니다. Node.js HTTP 에서 문서를 확인할 수 있습니다 .

다른 HTTP 서버에도 쿼리 문자열을 전달해야합니다. ServerRequest.url에 있어야합니다 .

해당 정보가 있으면 백엔드 HTTP 서버와 포트를 전달할 수 있습니다. http.request()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.