Как делать HTTP-запросы в Node.js с помощью node-fetch

Kak Delat Http Zaprosy V Node Js S Pomos U Node Fetch



HTTP-запросы имеют решающее значение и предназначены для получения информации из URL-адресов по всему миру, то есть для вызова веб-сайта и т. д. Этот подход вступает в силу, когда веб-приложению необходимо установить связь с веб-серверами для доступа к ресурсам. Например, получение или публикация данных на веб-сервере или API.

В JavaScript это можно выполнить с помощью команды « окно.fetch() метод. Однако в « узел.js », эта функциональность может быть достигнута с помощью нескольких пакетов, например, выборки узла и т. д.

В этом блоге описаны следующие области контента:







Что такое «выборка узла»?

« выборка узла соответствует облегченному модулю, который делает API выборки доступным для node.js. Этот модуль также позволяет пользователям использовать « принести() ” метод в node.js, который во многом похож на JavaScript “ окно.fetch() метод.



Синтаксис (метод fetch())



принести ( URL [ , параметры ] ) ;

В этом синтаксисе:





  • « URL «» относится к URL-адресу ресурса, который необходимо получить/получить.
  • « параметры Параметр ” необходим, когда необходимо использовать метод «fetch()», отличный от создания « ПОЛУЧАТЬ ' запрос.

Возвращаемое значение

Эта функция извлекает объект Response, содержащий информацию об ответе HTTP, следующим образом:



  • текст: Получает тело ответа в виде строки.
  • заголовки: Возвращает объект, содержащий обработчики ответов.
  • json(): Анализирует тело ответа в объекте JSON.
  • текст статуса/статус: Содержит информацию о коде состояния HTTP.
  • хорошо: Дает « истинный », если статус представляет собой код состояния 2xx.

Предварительные условия для использования выборки узла

Ниже приведены предварительные условия, которые следует учитывать, прежде чем начать с « выборка узла »:

  • Установлена ​​не ниже версии 17.5 или новее.
  • Базовые знания JavaScript.

Как делать HTTP-запросы в node.js с помощью node-fetch?

Выполнение HTTP-запросов является асинхронной процедурой, поскольку получение запрошенного ответа занимает некоторое время. Дело в том, что могут существовать две методологии использования асинхронных процедур. Первый из них заключается в том, что пользователь может дождаться ответа, а затем продолжить работу с кодом. Другой выполняет код параллельно.

Как начать работу с выборкой узлов?

Прежде чем начать или установить « выборка узла ” инициализируйте проект узла с помощью приведенной ниже команды:

npm инициализация - и

Выполнение этой команды создает « пакет.json ” в текущем каталоге следующим образом:

Теперь установите « выборка узла ” с помощью следующего командлета:

узел установки npm - принести

Однако для установки целевой версии модуля используйте следующую команду:

узел установки npm - принести@ 2.0

В этом случае « 2.0 » версия модуля будет установлена.

Примечание: Прежде чем приступить к примерам, создайте файл « index.mjs ” в рабочей области, которая будет использоваться для применения функций.

Пример 1: Отправлять запросы на получение через node-fetch

« выборка узла Модуль можно использовать для получения текста с веб-сервера или данных через Rest API.

Приведенный ниже пример кода написан в созданном « index.mjs ” выполняет простой запрос Get на главную страницу YouTube:

Импортировать принести от 'выборка узла' ;

принести ( 'https://youtube.com' )

. затем ( рез => рез. текст ( ) )

. затем ( текст => консоль. бревно ( текст ) ) ;

В этих строках кода:

  • Загрузите « выборка узла » и получить домашнюю страницу YouTube по указанному URL-адресу, к которому отправляется HTTP-запрос.
  • После этого соедините « затем() ” методы для обработки ответа и данных из сделанного запроса.
  • Первый метод then() указывает на ожидание получения ответа от сервера YouTube и преобразования его в текстовый формат.
  • Последний метод «then()» означает ожидание результата предыдущего преобразования и отображает его на консоли.

Выход

Теперь выполните код с помощью следующего командлета:

индекс узла. MJS

Выполнение приведенной выше команды приводит к получению всей HTML-разметки домашней страницы YouTube, отображаемой на консоли:

Пример 2: Получить данные JSON из Rest API

В этом примере используется « выборка узла », чтобы получить поддельные данные через JSONЗаполнитель РестAPI. Это так, что « принести() ” содержит URL-адрес сервера и ожидает ответа:

Импортировать принести от 'выборка узла' ;

принести ( 'https://jsonplaceholder.typicode.com/users' )

. затем ( рез => рез. JSON ( ) )

. затем ( JSON => {

консоль. бревно ( «Первый пользователь массива ->» ) ;

консоль. бревно ( JSON [ 0 ] ) ;

консоль. бревно ( «Имя пользователя первого массива ->» ) ;

консоль. бревно ( JSON [ 0 ] . имя ) ;

} )

Согласно этому блоку кода выполните следующие действия:

  • Тело HTTPS содержит данные в формате JSON, содержащие данные пользователя.
  • После этого « json() ” применяется для вызова отдельных записей и соответствующих значений.

Выход

Примените приведенный ниже командлет для выполнения кода:

индекс узла. MJS

Пример 3: Публикация запросов через node-fetch

« выборка узла Модуль также можно использовать для публикации запросов вместо их получения. Этого можно достичь с помощью « принести() », который включает дополнительный параметр для отправки POST-запросов на сервер.

Существует несколько опций, которые можно назначить с помощью этого параметра. Однако в данном случае « метод ', ' тело ' и ' заголовки ' будет использован. Ниже приводится описание каждого из вариантов:

  • « метод Параметр «» устанавливает тип HTTP-запросов, т. е. «POST» в этом сценарии.
  • « тело Опция » содержит тело запроса.
  • « заголовок Опция «» содержит все необходимые заголовки, т. е. « Тип содержимого в этом сценарии.

Теперь перейдем к практической реализации отправки запросов на публикацию, добавив новый элемент в заполнитель JSON « все ». Это делается путем добавления нового элемента в список с идентификатором пользователя «476»:

Импортировать принести от 'выборка узла' ;

пусть все '=' {

ID пользователя : 476 ,

сайт : «Это Linuxhint» ,

завершенный : ЛОЖЬ

} ;

принести ( 'https://jsonplaceholder.typicode.com/todos' , {

метод : 'ПОЧТА' ,

тело : JSON. строкировать ( все ) ,

заголовки : { 'Тип содержимого' : 'приложение/json' }

} ) . затем ( рез => рез. JSON ( ) )

. затем ( JSON => консоль. бревно ( JSON ) ) ;

В этом коде:

  • Прежде всего, создайте объект задачи и преобразуйте его в JSON, добавляя его в тело.
  • Теперь аналогичным образом укажите URL с необходимыми параметрами в виде « принести() ” необязательные параметры метода.
  • После этого примените « JSON.stringify() ” для преобразования объекта в форматированную строку (JSON) перед его отправкой/передачей на веб-сервер.
  • Двигаясь вперед, реализуйте комбинированный « затем() ” для получения данных путем ожидания ответа, преобразования его в JSON и входа в консоль соответственно.

Выход

Выполните приведенную ниже команду для выполнения кода:

индекс узла. MJS

Что такое коды состояния HTTP?

Прежде чем перейти к следующему примеру, убедитесь, что если ответ содержит « 3хх ” код состояния, клиенту необходимо предпринять дополнительные шаги. Аналогично, « 4хх Коды ” представляют собой неверный запрос, а коды “ 5xx Коды » соответствуют ошибкам сервера.

Примечание: « ловить() ” не может справиться с вышеописанными случаями, поскольку связь с сервером происходит в упрощенном порядке. Таким образом, эффективный подход к тому, чтобы гарантировать, что неудачные запросы возвращают ошибку, — это определить функцию, которая анализирует HTTP-статус ответа сервера.

Пример 4: Как справиться с исключениями и ограничениями

С отправленными запросами может быть несколько ограничений или исключений, например, проблемы с Интернетом», — сказал он. принести() ограничения функций и т. д. Эти исключения можно обработать, добавив « ловить() » функция:

функция анализа состояния ( Икс ) {

если ( Икс. хорошо ) {

возвращаться Икс

} еще {

бросать новый Ошибка ( `Состояние HTTP относительно ответа -> $ { Икс. положение дел } ( $ { Икс. статустекст } ) ` ) ;

}

}

принести ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. затем ( анализироватьстатус )

. затем ( Икс => Икс. JSON ( ) )

. затем ( JSON => консоль. бревно ( JSON ) )

. ловить ( ошибаться => консоль. бревно ( ошибаться ) ) ;

В этом фрагменте кода:

  • Во-первых, определите функцию, имеющую указанный параметр, прежде чем анализировать ответ, чтобы справиться с возникшими ограничениями.
  • Теперь добавьте « если еще ” для выдачи обнаруженной ошибки или пользовательского ограничения.
  • После этого аналогично примените « принести() » и связанные с ним методы «then()» для получения данных путем ожидания ответа, преобразования его в JSON и входа в консоль.
  • Наконец, исключения во время выполнения можно устранить, поместив параметр « ловить() ” в конце цепочки обещаний.

Выход

Наконец, запустите приведенный ниже командлет, чтобы запустить код и вызвать возникающие исключения:

индекс узла. MJS

Другие случаи использования «выборки узла»

« выборка узла » также можно использовать для создания « API-запросы ' или ' Веб-скрапинг ». Давайте обсудим эти варианты использования подробно.

Использование выборки узла для выполнения запросов API

API может потребоваться в нескольких сценариях для получения целевых данных через внутренний источник. HTTP-запросы могут иметь множество методов аутентификации, например использование ключа API, когда поставщик API предоставляет ключ, доступный только пользователю. Другой подход к защите API может заключаться в следующем: « Базовая аутентификация », в котором необходимо отправить заголовок для вызова API.

Ниже приводится демонстрация последнего подхода, то есть «Базовой аутентификации» в почтовом запросе с помощью « принести() » метод:

( асинхронный ( ) => {

константа Икс '=' ожидайте получения ( 'http://httpbin.org/post' , {

метод : 'ПОЧТА' ,

заголовки : {

«Авторизация» : `Базовый $ { братан ( 'логин Пароль' ) } `

} ,

тело : JSON. строкировать ( {

'ключ' : 'ценить'

} )

} ) ;

константа результат '=' жду х. текст ( ) ;

консоль. бревно ( результат ) ;

} ) ( ) ;

В приведенной выше демонстрации заголовок отправляется с « база64 ” закодированная строка формата “ логин Пароль ».

Использование выборки узлов для веб-скрапинга

« Веб-скрапинг «» относится к методу, при котором данные/контент извлекаются с сайтов и анализируются. Этот анализ достигается с помощью « приветствие » библиотека.

Ниже приведена демонстрация получения заголовка страницы с помощью команды « принести() «метод и» приветствие » библиотека:

константа библиотека '=' требовать ( 'радость' ) ;

( асинхронный ( ) => {

константа Икс '=' ожидайте получения ( 'https://linuxhint.com/' ) ;

константа и '=' жду х. текст ( ) ;

константа $ '=' либ. нагрузка ( и ) ;

консоль. бревно ( $ ( 'заголовок' ) . первый ( ) . текст ( ) ) ;

} ) ( ) ;

В этом примере извлекается плитка « Линукс » название сайта.

Заключение

HTTP-запросы в node.js могут выполняться с помощью node-fetch, отправляя запросы на получение, получая данные JSON из REST API или отправляя почтовые запросы. Кроме того, исключения и ограничения можно эффективно обрабатывать с помощью « ловить() » функция.