- PVSM.RU - https://www.pvsm.ru -

Обзор пяти HTTP-библиотек для веб-разработки

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

Обзор пяти HTTP-библиотек для веб-разработки - 1 [1]

В основе подобного взаимодействия систем лежит технология AJAX, в рамках применения которой используется экземпляр объекта XMLHttpRequest. Для того чтобы облегчить программистам работу с AJAX и XMLHttpRequest, созданы специализированные библиотеки, которые предоставляют разработчикам удобные интерфейсы, избавляя их от необходимости пользоваться низкоуровневыми механизмами.

Материал, перевод которого мы сегодня публикуем, посвящён анализу пяти популярных инструментов для работы с HTTP: Axios, Request, Superagent, Fetch и Supertest.

Axios

Библиотека Axios [2], предназначенная для выполнения HTTP-запросов, основана на промисах. Она подходит для использования в среде Node.js и в браузерных приложениях. Библиотека поддерживает все современные браузеры, и, в том числе, IE8+.

▍Сильные стороны

  • Работает в среде Node.js и в браузерах.
  • Поддерживает промисы.
  • Позволяет выполнять и отменять запросы.
  • Позволяет задавать тайм-аут ответа.
  • Поддерживает защиту от XSRF-атак.
  • Позволяет перехватывать запросы и ответы.
  • Поддерживает индикацию прогресса выгрузки данных.
  • Широко используется в проектах, основанных на React и Vue.

▍Слабые стороны

  • Библиотекой довольно сложно пользоваться.

Superagent

Библиотека Superagent [3], как и Axios, подходит для Node.js и для современных браузеров. Она предоставляет разработчику простое и понятное API, с которым удобно работать.

Для того чтобы выполнить HTTP-запрос средствами Superagent, достаточно вызвать подходящий метод объекта request:

request
    .get('')
    .then(res => log(res))
    .catch(err => log(err))

▍Сильные стороны

  • Поддерживает плагины.
  • Поддаётся конфигурированию.
  • Имеет приятный интерфейс для выполнения HTTP-запросов.
  • Поддерживает объединение в цепочку нескольких вызовов для выполнения запросов.
  • Работает в среде Node.js и в браузерах.
  • Поддерживает индикацию прогресса для выгрузки и загрузки данных.
  • Поддерживает механизм chunked-transfer encoding.
  • Поддерживает коллбэки.
  • Для этой библиотеки разработано множество плагинов.

▍Слабые стороны

  • Имеет своеобразное API, не придерживающееся каких-либо стандартов.

Request

Библиотека Request [4], в сравнении с предыдущими рассмотренными инструментами, представляет собой упрощённое средство для выполнения HTTP-запросов. При использовании этой библиотеки приходится писать меньше кода, чем при работе с другими библиотеками. Она не использует промисы, но, если вам эта возможность нужна, вы можете воспользоваться библиотекой Request-Promise [5], реализующей обёртку вокруг библиотеки Request и позволяющей работать с промисами.

▍Сильные стороны

  • API, которым легко пользоваться.

▍Слабые стороны

  • Библиотека не использует промисы.

Fetch

Fetch [6] — это, в отличие от других средств, рассматриваемых в этом обзоре, не библиотека. Это стандартное браузерное API, являющееся альтернативой XMLHttpRequest.

▍Сильные стороны

  • Гибкость и простота в использовании.
  • Применение промисов, что позволяет избежать «ада коллбэков».
  • Поддержка всеми современными браузерами.
  • Следование подходу «запрос — ответ».
  • Простой и приятный синтаксис.
  • Поддерживается в React Native.

▍Слабые стороны

  • Не работает в серверной среде.
  • Не реализует некоторые возможности, имеющиеся в HTTP-библиотеках, такие, как отмена запроса.
  • Не содержит встроенной поддержки параметров, задаваемых по умолчанию, наподобие режима запроса, заголовков, учётных данных.

Supertest

Библиотека Supertest [7] основана на библиотеке Superagent. Она предназначена для тестирования HTTP-серверов, построенных на основе Node.js. Supertest даёт разработчику доступ к собственному API и к низкоуровневому API, предоставляемому библиотекой Superagent.

▍Сильные стороны

  • Имеет удобное API.
  • Упрощает конструирование HTTP-тестов.
  • Может быть использована совместно с такими библиотеками для тестирования проектов, как Chai.js [8] и Mocha [9].

▍Слабые стороны

  • Не работает в браузерах.

Итоги

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

Уважаемые читатели! Какими HTTP-библиотеками вы пользуетесь?

Автор: ru_vds

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/301937

Ссылки в тексте:

[1] Image: https://habr.com/company/ruvds/blog/432634/

[2] Axios: https://github.com/axios/axios

[3] Superagent: https://github.com/visionmedia/superagent

[4] Request: https://github.com/request/request

[5] Request-Promise: https://github.com/request/request-promise

[6] Fetch: https://developer.mozilla.org/ru/docs/Web/API/Fetch_API

[7] Supertest: https://github.com/visionmedia/supertest

[8] Chai.js: http://chaijs.com/

[9] Mocha: https://mochajs.org/

[10] Источник: https://habr.com/post/432634/?utm_campaign=432634