HTTP-запросы в Node с использованием Axios

Axios - очень удобная библиотека JavaScript для выполнения HTTP-запросов в Node.js

Вступление

Axios - очень популярная библиотека JavaScript, которую вы можете использовать для выполнения HTTP-запросов, которая работает как в браузере, так и вNode.jsплатформы.

Он поддерживает все современные браузеры, включая поддержку IE8 и выше.

Он основан на обещаниях, и это позволяет нам писать код async / await для выполненияXHRзапросы очень легко.

Использование Axios имеет ряд преимуществ перед роднымПолучить API:

  • поддерживает старые браузеры (для Fetch нужен полифилл)
  • есть способ прервать запрос
  • есть способ установить время ожидания ответа
  • имеет встроенную защиту от CSRF
  • поддерживает прогресс загрузки
  • выполняет автоматическое преобразование данных JSON
  • работает в Node.js

Видеоурок

Посмотрите это видео, где я создаю сервер Express, который предлагает конечную точку POST, и делаю к нему запрос Axios для публикации данных:


Установка

Axios можно установить с помощьюnpm:

npm install axios

или жепряжа:

yarn add axios

или добавьте его на свою страницу с помощью unpkg.com:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

API Axios

Вы можете запустить HTTP-запрос изaxiosобъект:

я используюfooиbarв качествеслучайные имена. Введите любое имя, чтобы заменить их.

axios({
  url: 'https://dog.ceo/api/breeds/list/all',
  method: 'get',
  data: {
    foo: 'bar'
  }
})

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

  • axios.get()
  • axios.post()

(например, в jQuery вы бы использовали$.get()и$.post()вместо$.ajax())

Axios предлагает методы для всех HTTP-глаголов, которые менее популярны, но все еще используются:

  • axios.delete()
  • axios.put()
  • axios.patch()
  • axios.options()

и метод получения HTTP-заголовков запроса, отбрасывая тело:

  • axios.head()

GET запросы

Один из удобных способов использования Axios - это использовать современный (ES2017) синтаксис async / await.

Этот пример Node.js запрашиваетСобака APIполучить список всех пород собак, используяaxios.get(), и он их считает:

const axios = require('axios')

const getBreeds = async () => { try { return await axios.get(https://dog.ceo/api/breeds/list/all) } catch (error) { console.error(error) } }

const countBreeds = async () => { const breeds = await getBreeds()

if (breeds.data.message) { console.log(Got </span><span style="color:#e6db74">${</span>Object.<span style="color:#a6e22e">entries</span>(<span style="color:#a6e22e">breeds</span>.<span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">message</span>).<span style="color:#a6e22e">length</span><span style="color:#e6db74">}</span><span style="color:#e6db74"> breeds) } }

countBreeds()

Если вы не хотите использовать async / await, вы можете использоватьОбещаниясинтаксис:

const axios = require('axios')

const getBreeds = () => { try { return axios.get(https://dog.ceo/api/breeds/list/all) } catch (error) { console.error(error) } }

const countBreeds = async () => { const breeds = getBreeds() .then(response => { if (response.data.message) { console.log( Got </span><span style="color:#e6db74">${</span>Object.<span style="color:#a6e22e">entries</span>(<span style="color:#a6e22e">response</span>.<span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">message</span>).<span style="color:#a6e22e">length</span><span style="color:#e6db74">}</span><span style="color:#e6db74"> breeds ) } }) .catch(error => { console.log(error) }) }

countBreeds()

Добавить параметры в запросы GET

Ответ GET может содержать параметры в URL-адресе, например:https://site.com/?foo=bar.

С Axios вы можете сделать это, используя этот URL:

axios.get('https://site.com/?foo=bar')

или вы можете использоватьparamsнедвижимость в вариантах:

axios.get('https://site.com/', {
  params: {
    foo: 'bar'
  }
})

POST запросы

Выполнение запроса POST похоже на выполнение запроса GET, но вместоaxios.get, ты используешьaxios.post:

axios.post('https://site.com/')

Второй аргумент - объект, содержащий параметры POST:

axios.post('https://site.com/', {
  foo: 'bar'
})

Скачать мою бесплатнуюСправочник по Node.js


Дополнительные руководства по узлам: