node-fetch를 사용하여 Node.js에서 HTTP 요청을 만드는 방법

Node Fetchleul Sayonghayeo Node Jseseo Http Yocheong Eul Mandeuneun Bangbeob



HTTP 요청은 중요하며 URL에서 전역적으로 정보를 가져오는 데 사용됩니다(예: 웹 사이트 호출 등). 이 접근 방식은 웹 애플리케이션이 리소스에 액세스하기 위해 웹 서버와 통신을 설정해야 할 때 적용됩니다. 예를 들어 웹 서버나 API에 데이터를 검색하거나 게시합니다.

JavaScript에서는 “를 통해 수행할 수 있습니다. 창.가져오기() ' 방법. 그러나 “ node.js ”, 이 기능은 여러 패키지, 즉 node-fetch 등을 사용하여 달성할 수 있습니다.

이 블로그에서는 다음 콘텐츠 영역을 설명합니다.







'노드 가져오기'란 무엇입니까?

노드 가져오기 '는 fetch API를 node.js에 액세스할 수 있게 만드는 경량 모듈에 해당합니다. 이 모듈을 사용하면 사용자는 ' 술책() ' JavaScript와 대부분 유사한 node.js의 메소드 ' 창.가져오기() ' 방법.



구문(fetch() 메서드)



술책 ( URL [ , 옵션 ] ) ;

이 구문에서는:





  • URL ”는 가져오거나 검색해야 하는 리소스의 URL을 나타냅니다.
  • 옵션 ” 매개변수는 “를 만드는 것 외에 “fetch()” 메서드를 사용해야 하는 경우에 필요합니다. 얻다 ' 요구.

반환 값

이 함수는 다음과 같이 HTTP 응답에 관한 정보로 구성된 Response 객체를 검색합니다.



  • 텍스트: 문자열 형식으로 응답 본문을 검색합니다.
  • 헤더: 응답 핸들러로 구성된 객체를 반환합니다.
  • JSON(): JSON 개체의 응답 본문을 구문 분석합니다.
  • 상태텍스트/상태: HTTP 상태 코드에 관한 정보로 구성됩니다.
  • 좋아요: “를 준다 진실 ” 상태가 2xx 상태 코드인 경우.

node-fetch 사용을 위한 전제 조건

다음은 '를 시작하기 전에 고려해야 할 전제 조건입니다. 노드 가져오기 ':

  • 17.5 버전 이상 또는 최신 버전을 설치했습니다.
  • JavaScript에 대한 기본 지식.

node-fetch를 사용하여 node.js에서 HTTP 요청을 만드는 방법은 무엇입니까?

HTTP 요청을 하는 것은 요청된 응답을 받는 데 시간이 좀 걸리기 때문에 비동기식 절차입니다. 따라서 비동기 프로시저를 활용하는 데에는 두 가지 방법론이 있을 수 있습니다. 첫 번째는 사용자가 응답을 기다린 다음 코드를 사용하여 재개할 수 있다는 것입니다. 다른 하나는 코드를 병렬로 실행하는 것입니다.

node-fetch를 시작하는 방법은 무엇입니까?

'를 시작하거나 설치하기 전에 노드 가져오기 ” 모듈에서 아래 명령을 사용하여 노드 프로젝트를 초기화합니다.

npm 초기화 - 그리고

이 명령을 실행하면 ' 패키지.json ” 파일을 현재 디렉터리에 다음과 같이 저장합니다.

이제 “를 설치하세요. 노드 가져오기 ” 모듈은 다음 cmdlet을 사용합니다.

npm 설치 노드 - 술책

그러나 대상 모듈 버전을 설치하려면 다음 명령을 사용하십시오.

npm 설치 노드 - 술책@ 2.0

이 경우 “ 2.0 ” 버전의 모듈이 설치됩니다.

메모: 예제를 진행하기 전에 ' index.mjs 기능을 적용하는 데 사용되는 작업 공간의 파일입니다.

예시 1: node-fetch를 통해 Get 요청 보내기

노드 가져오기 ” 모듈을 사용하여 웹 서버에서 텍스트를 가져오거나 Rest API를 통해 데이터를 가져올 수 있습니다.

생성된 “ index.mjs ” 파일은 YouTube 홈페이지에 대한 간단한 Get 요청을 만듭니다.

수입 술책 ~에서 '노드 가져오기' ;

술책 ( 'https://youtube.com' )

. 그 다음에 ( 입술 => 입술. 텍스트 ( ) )

. 그 다음에 ( 텍스트 => 콘솔. 통나무 ( 텍스트 ) ) ;

다음 코드 줄에서:

  • “를 로드하세요. 노드 가져오기 ” 모듈을 검색하고 HTTP 요청이 이루어진 지정된 URL을 통해 YouTube 홈페이지를 검색합니다.
  • 그 후 “ 그 다음에() ” 요청의 응답과 데이터를 처리하는 메서드입니다.
  • 이전의 “then()” 메서드는 YouTube 서버로부터 응답을 받아 텍스트 형식으로 변환하기를 기다리는 것을 나타냅니다.
  • 후자의 “then()” 메서드는 이전 변환의 결과를 기다리는 것을 의미하며 이를 콘솔에 표시합니다.

산출

이제 다음 cmdlet을 통해 코드를 실행합니다.

노드 인덱스. mjs

위 명령을 실행하면 콘솔에 표시된 YouTube 홈페이지의 전체 HTML 마크업이 검색됩니다.

예 2: Rest API에서 JSON 데이터 검색

이 예에서는 “ 노드 가져오기 '를 통해 가짜 데이터를 얻으려면 JSON 자리 표시자 RestAPI. 그것은 “ 술책() ” 메소드는 서버의 URL로 구성되며 응답을 기다립니다.

수입 술책 ~에서 '노드 가져오기' ;

술책 ( 'https://jsonplaceholder.typicode.com/users' )

. 그 다음에 ( 입술 => 입술. JSON ( ) )

. 그 다음에 ( JSON => {

콘솔. 통나무 ( '첫 번째 어레이 사용자 -> ' ) ;

콘솔. 통나무 ( JSON [ 0 ] ) ;

콘솔. 통나무 ( '첫 번째 어레이 사용자 이름 -> ' ) ;

콘솔. 통나무 ( JSON [ 0 ] . 이름 ) ;

} )

이 코드 블록에 따라 다음 단계를 수행합니다.

  • HTTPS 본문은 사용자 데이터가 포함된 JSON 형식의 데이터로 구성됩니다.
  • 그 후, “ JSON() ” 함수는 개별 항목과 해당 값을 호출하는 데 적용됩니다.

산출

아래에 명시된 cmdlet을 적용하여 코드를 실행합니다.

노드 인덱스. mjs

예시 3: node-fetch를 통한 게시 요청

노드 가져오기 ” 모듈을 사용하여 요청을 검색하는 대신 요청을 게시할 수도 있습니다. 이는 다음을 통해 달성할 수 있습니다. 술책() ” 서버에 POST 요청을 하기 위한 추가 매개변수가 포함된 메서드입니다.

이 매개변수를 사용하여 할당할 수 있는 옵션은 여러 가지가 있습니다. 다만, 이 경우에는 “ 방법 ', ' ' 그리고 ' 헤더 ' 사용하게 될 것이다. 다음은 각 옵션에 대한 설명입니다.

  • 방법 ” 옵션은 HTTP 요청 유형(예: 이 시나리오에서는 “POST”)을 설정합니다.
  • ” 옵션은 요청 본문으로 구성됩니다.
  • 머리글 ” 옵션에는 필요한 모든 헤더가 포함되어 있습니다. 즉, “ 컨텐츠 타입 ” 이 시나리오에서는.

이제 JSON 자리 표시자의 ' 모두 '. userID가 '476'인 목록에 새 항목을 추가하면 됩니다.

수입 술책 ~에서 '노드 가져오기' ;

모든 것을 놔두다 = {

사용자 ID : 476 ,

대지 : '이것이 리눅스힌트입니다' ,

완전한 : 거짓

} ;

술책 ( 'https://jsonplaceholder.typicode.com/todos' , {

방법 : '우편' ,

: JSON. 문자열화하다 ( 모두 ) ,

헤더 : { '컨텐츠 타입' : '응용 프로그램/json' }

} ) . 그 다음에 ( 입술 => 입술. JSON ( ) )

. 그 다음에 ( JSON => 콘솔. 통나무 ( JSON ) ) ;

이 코드에서는:

  • 먼저 todo 객체를 생성하고 이를 본문에 추가하면서 JSON으로 변환합니다.
  • 이제 마찬가지로 필수 옵션이 포함된 URL을 ' 술책() ” 메소드의 선택적 매개변수입니다.
  • 그 후 “ JSON.stringify() ” 개체를 웹 서버로 전송/전송하기 전에 개체를 형식화된(JSON) 문자열로 변환하는 메서드입니다.
  • 앞으로는 결합된 ' 그 다음에() ” 응답을 기다리고, 이를 JSON으로 변환하고, 콘솔에 로깅하여 데이터를 검색하는 메서드입니다.

산출

아래 제공된 명령을 실행하여 코드를 실행하십시오.

노드 인덱스. mjs

HTTP 상태 코드란 무엇입니까?

다음 예시로 진행하기 전에 응답이 ' 3xx ” 상태 코드인 경우 클라이언트가 추가 단계를 수행해야 합니다. 마찬가지로, “ 4xx ' 코드는 잘못된 요청을 나타내며 ' 5xx ” 코드는 서버 오류에 해당합니다.

메모: 잡다() ” 기능은 서버 통신이 원활하게 이루어지기 때문에 위에서 설명한 경우에 대처할 수 없습니다. 따라서 실패한 요청이 오류를 반환하도록 하는 효과적인 접근 방식은 서버 응답의 HTTP 상태를 분석하는 함수를 정의하는 것입니다.

예시 4: 예외 및 제한 사항에 대처하기

전송된 요청에는 몇 가지 제한사항이나 예외가 있을 수 있습니다(예: 인터넷 문제, ' 술책() ” 기능 제한 등. 이러한 예외는 “ 잡다() ' 기능:

함수 analyzeStatus ( 엑스 ) {

만약에 ( 엑스. 좋아요 ) {

반품 엑스

} 또 다른 {

던지다 새로운 오류 ( `응답에 대한 HTTP 상태 -> $ { 엑스. 상태 } ( $ { 엑스. 상태텍스트 } ) ` ) ;

}

}

술책 ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. 그 다음에 ( 분석상태 )

. 그 다음에 ( 엑스 => 엑스. JSON ( ) )

. 그 다음에 ( JSON => 콘솔. 통나무 ( JSON ) )

. 잡다 ( 실수 => 콘솔. 통나무 ( 실수 ) ) ;

이 코드 조각에서:

  • 먼저, 직면한 한계에 대처하기 위해 응답을 구문 분석하기 전에 명시된 매개변수를 갖는 함수를 정의합니다.
  • 이제 “ 다른 경우라면 ” 직면한 오류나 사용자 지정 제한 사항을 던지는 명령문입니다.
  • 그 후 마찬가지로 '를 적용합니다. 술책() ” 메서드와 관련 “then()” 메서드를 사용하여 응답을 기다리고 이를 JSON으로 변환한 후 콘솔에 로그인하여 데이터를 검색합니다.
  • 마지막으로, 런타임 예외는 ' 잡다() ” 메소드를 Promise 체인의 마지막에 추가합니다.

산출

마지막으로 아래 제공된 cmdlet을 실행하여 코드를 실행하고 직면한 예외를 발생시킵니다.

노드 인덱스. mjs

'node-fetch'의 다른 사용 사례

노드 가져오기 ”는 “를 만드는 데에도 사용될 수 있습니다. API 요청 ' 또는 ' 웹 스크래핑 '. 이러한 사용 사례에 대해 자세히 논의해 보겠습니다.

API 요청을 위한 node-fetch 활용

백엔드 소스를 통해 대상 데이터를 가져오기 위해 여러 시나리오에서 API가 필요할 수 있습니다. HTTP 요청에는 API 공급자가 사용자에게만 제한된 키를 제공하는 API 키를 활용하는 등 다양한 인증 방법이 있을 수 있습니다. API를 보호하는 또 다른 접근 방식은 다음과 같습니다. 기본 인증 ” API를 호출하려면 헤더를 보내야 합니다.

다음은 후자의 접근 방식, 즉 '기본 인증'을 사용하여 사후 요청에 대한 데모입니다. 술책() ' 방법:

( 비동기 ( ) => {

const 엑스 = 가져오기를 기다리다 ( 'http://httpbin.org/post' , {

방법 : '우편' ,

헤더 : {

'권한 부여' : `기본 $ { ( '로그인 비밀번호' ) } `

} ,

: JSON. 문자열화하다 ( {

'열쇠' : '값'

} )

} ) ;

const 결과 = 기다려라 x. 텍스트 ( ) ;

콘솔. 통나무 ( 결과 ) ;

} ) ( ) ;

위의 데모에서는 헤더가 ' 베이스64 ' 형식의 인코딩된 문자열 ' 로그인 비밀번호 '.

웹 스크래핑을 위한 node-fetch 활용

웹 스크래핑 ”는 사이트에서 데이터/컨텐츠를 가져와서 구문 분석하는 기술을 의미합니다. 이 구문 분석은 ' 안녕 ' 도서관.

다음은 '를 통해 페이지 제목을 가져오는 데모입니다. 술책() ' 방법과 ' 안녕 ' 도서관:

const lib = 필요하다 ( '환호' ) ;

( 비동기 ( ) => {

const 엑스 = 가져오기를 기다리다 ( 'https://linuxhint.com/' ) ;

const 그리고 = 기다려라 x. 텍스트 ( ) ;

const $ = lib. ( 그리고 ) ;

콘솔. 통나무 ( $ ( '제목' ) . 첫 번째 ( ) . 텍스트 ( ) ) ;

} ) ( ) ;

이 예에서는 ' 리눅스 ” 사이트 제목입니다.

결론

node.js의 HTTP 요청은 가져오기 요청을 보내거나 REST API에서 JSON 데이터를 검색하거나 게시 요청을 보내는 방식으로 node-fetch를 통해 수행될 수 있습니다. 또한 예외 및 제한사항은 ' 잡다() ' 기능.