> 웹 프론트엔드 > JS 튜토리얼 > nodejs http 요청 관련 요약 소개

nodejs http 요청 관련 요약 소개

不言
풀어 주다: 2019-04-01 11:50:57
앞으로
1918명이 탐색했습니다.

이 기사는 nodejs http 요청에 대한 요약을 제공합니다. 특정 참고 가치가 있으므로 도움이 필요한 친구가 참고할 수 있기를 바랍니다.

노드에서 제공하는 http 모듈을 통해 제공되는 get() 및 request() 메서드를 통해 http 요청을 시작할 수 있습니다. get()은 get 요청을 시작하는 데 편리한 request() 메서드의 캡슐화입니다. 게시 요청을 구현하려면 request() 메서드를 캡슐화해야 합니다.

request() 메소드

let req = http.request("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
req.end();//必须调用end()方法结束请求
로그인 후 복사
로그인 후 복사
request() 메소드를 사용하여 http 요청을 시작할 때 request() 메소드는 요청 객체를 반환하고, 반환된 요청 객체의 end() 메소드는 반드시 요청 작업이 완료되었음을 나타내기 위해 호출됩니다. 그렇지 않으면 요청이 보류되어 요청된 작업이 완료될 때까지 기다립니다.

request() 메서드 매개변수 문제:

request()의 첫 번째 매개변수는 URL 주소가 직접 될 수 있으며, 두 번째 매개변수는 요청이 완료되고 서버 응답을 받은 후의 콜백 함수입니다. res
let req = http.request("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
req.end();//必须调用end()方法结束请求
로그인 후 복사
로그인 후 복사
request() 객체의 첫 번째 매개변수는 요청 데이터 구성 객체일 수 있으며, 두 번째 매개변수는 요청이 완료되고 서버 응답이 수신된 후의 콜백 함수입니다. response 객체 res
let req = http.request({hostname:"www.baiduc.com",port:80}, (res) =>{
    console.log(res.statusCode);
});
req.end();//必须调用end()方法结束请求
로그인 후 복사
인 매개변수는 request() 메소드가 URL 주소와 요청 데이터 구성 객체를 동시에 전달할 수 없다는 점에 유의해야 합니다. , request() 메소드는 http를 시작하기 위해 두 개의 매개변수

get() 메소드

let req = http.get("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
로그인 후 복사
get() 메소드만 전달할 수 있습니다. 요청할 때 get() 메소드는 요청 객체도 반환하지만 end() 메소드는 request() 메소드와는 다른 요청 객체를 통해 수행됩니다.

get() 메소드 매개변수 문제:

get() 메소드와 request() 메소드의 매개변수가 동일합니다. 즉, end() 메소드를 호출할 필요가 없습니다.

요청 시간 초과 설정 방법

요청 시간 초과를 설정하려면 get() 또는 request() 메서드에서 반환된 요청 객체의 setTimeout() 메서드를 사용할 수 있습니다.
let req = http.get("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
 req.setTimeout(1,()=>{
     console.log(`请求超时了`);
     req.abort();//终止请求
 });
로그인 후 복사

1밀리초 후에도 응답이 없으면 setTimeout 콜백 함수가 트리거되며 이때 요청을 직접 종료할 수 있습니다.

2 이를 달성하기 위해 다음과 같이 타이머를 설정할 수도 있습니다.

let requestTimer = null;
let req = http.get("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
    if(res.statusCode === 200){
        clearTimeout(requestTimer);//请求超时之前完成,清除超时定时器
    }
});

requestTimer  = setTimeout(() => {
     req.emit("timeout", {"msg": "请求超时了"});//如果请求超时了则发送timeout事件
}, 1000);

req.on("timeout",(msg) => {//监听timeout事件并终止请求
    console.log(`收到timeout事件!`);
    req.abort();
    console.log(`终止请求`);
});
로그인 후 복사

응답 데이터 가져오기

get() 및 request() 메서드 콜백 함수의 응답 개체 res는 응답 데이터를 전달하지 않습니다. 데이터에 응답하려면 데이터를 수신하고 응답 개체를 통해 이벤트를 종료해야 합니다.

let req = http.get("http://www.baidu.com", (res) =>{
    let resStr = "";
    res.on("data", (res) => {
        resStr += res;
    });    
    res.on("end", () => {
        console.log(resStr);
    });
});
로그인 후 복사

【관련 추천: node.js 동영상 튜토리얼

위 내용은 nodejs http 요청 관련 요약 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿