6 различных способов выполнения Ajax-вызовов в JavaScript

0 Акции
0
0
0
0

Введение

В JavaScript существует множество способов вызова Ajax, которые могут значительно улучшить пользовательский опыт, например, отправка данных на сервер, проверка имен пользователей, создание форм с автозаполнением, голосование и оценка, создание чатов и так далее.

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

1. XHR

XMLHttpRequest — это объект (встроенный компонент в большинстве других браузеров, объект ActiveX в Microsoft Internet Explorer), который позволяет веб-странице отправлять запрос на сервер и получать ответ без перезагрузки всей страницы. Пользователь продолжает просмотр страницы, как если бы она не была перезагружена, и, что более важно, не видит и не замечает обработки — то есть, по крайней мере по умолчанию, не видит загрузки новой страницы.

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

Выполнение GET-запроса с использованием XHR
const Http = new XMLHttpRequest();
const url='http://yourdomain.com/';
Http.open("GET", url);
Http.send();
Http.onreadystatechange=(e)=>{
console.log(Http.responseText)
}
Отправка запроса с использованием XHR
var xhr = new XMLHttpRequest();
xhr.open("POST", '/submit', true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
// Request finished. Do processing here.
}
}
xhr.send("name=Ketan&id=1");

2. API получения данных

API Fetch — это новая альтернатива XMLHttpRequest для получения ресурсов с сервера. В отличие от XMLHttpRequest, он обладает более мощным набором функций и более осмысленными именами. Fetch также гибок и прост в использовании благодаря своему синтаксису и структуре. Однако то, что отличает его от других библиотек AJAX HTTP, — это поддержка всеми современными веб-браузерами. Fetch использует подход «запрос-ответ», где Fetch отправляет запрос и возвращает промис, который разрешается в объект Response.

Преимущества использования Fetch API
  • Он гибкий и простой в использовании.
  • Промисы позволяют избежать «ада обратных вызовов»
  • Поддерживается всеми современными браузерами.
  • Используется подход "запрос-ответ".
Недостатки использования Fetch API
  • По умолчанию не отправляет файлы cookie.
  • CORS отключен по умолчанию.
Выполнение GET-запроса в Fetch API
fetch('https://www.yourdomain.com', {
method: 'get'
})
.then(response => response.json())
.then(jsonData => console.log(jsonData))
.catch(err => {
//error block
}
Выполнение POST-запроса в Fetch API
var url = 'https://www.yourdomain.com/updateProfile';
var data = {username: 'courseya'};
fetch(url, {
method: 'POST', // or 'PUT'
body: JSON.stringify(data), // data can be `string` or {object}!
headers:{
'Content-Type': 'application/json'
}
}).then(res => res.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.error('Error:', error));

3. jQuery

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

Преимущества использования jQuery
  • Главное преимущество jQuery — его простота.
  • Кроме того, он невероятно гибок, поскольку jQuery позволяет пользователям добавлять плагины.
  • Это также очень быстрое решение ваших проблем. Хотя могут существовать «лучшие» решения, jQuery и его разработчики работают в команде, чтобы обеспечить быстрое и эффективное внедрение jQuery, что позволяет вам сэкономить деньги.
  • Программное обеспечение с открытым исходным кодом означает быстрый рост и свободу для разработчиков, позволяющую предоставлять наилучший сервис без бюрократических проволочек.
Недостатки использования jQuery
  • Кроме того, частые обновления означают, что участники сообщества вряд ли предложат свои решения.
  • Сейчас существует множество различных версий jQuery, и некоторые из них менее совместимы, чем другие.
  • Иногда jQuery работает медленнее по сравнению с CSS. В таких случаях его простота становится недостатком, поскольку он не предназначен для взаимодействия на стороне клиента.
Выполнение GET-запроса в jQuery
$.ajax({
url: '/users',
type: "GET",
dataType: "json",
success: function (data) {
console.log(data);
},
error: function (error) {
console.log(`Error ${error}`);
}
});
Выполнение POST-запроса с помощью jQuery
$.ajax({
url: '/users',
type: "POST",
data: {
name: "Ipseeta",
id: 1
},
dataType: "json",
success: function (data) {
console.log(data);
},
error: function (error) {
console.log(`Error ${error}`);
}
});

4. Аксиос

Axios — один из многих HTTP-клиентов, работающих на основе промисов, как в браузере, так и в среде Node.js. По сути, он предоставляет единый API для работы с XMLHttpRequest и HTTP-интерфейсом Node.js. Кроме того, он соединяет запросы, используя полифил для нового синтаксиса ES6.

Преимущества использования Axios
  • Гарантия поддержки «из коробки»
  • Поддержка защиты от XSRF на стороне клиента
  • Может записывать запросы или ответы до их выполнения.
  • Автоматическое преобразование данных в формат JSON
  • Поддерживает API промисов
  • Можно изменить или отменить запрос.
  • Можно отрегулировать время отклика
  • Работает как в Nodejs, так и в браузере.
Выполнение GET-запроса в Axios
axios.get('/get-user', {
params: {
ID: 1
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
.then(function () {
// always executed
});
Выполнение POST-запроса в Axios
axios.post('/user', {
name: 'Sanjeev',
id: 1
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});

5. Запрос

Библиотека Request — один из самых простых способов выполнения HTTP-запросов. Её структура и синтаксис очень похожи на обработку запросов в Node.js. В настоящее время проект имеет 18 тысяч звёзд на GitHub и заслуживает упоминания, поскольку является одной из самых популярных HTTP-библиотек.

Синтаксис
var request = require('request');
request('http://www.yourdomain.com', function (error, response, body) {
console.log('error:', error);
console.log('statusCode:', response && response.statusCode); 
console.log('body:', body);
});

6. Суперагент

SuperAgent — это легковесная и продвинутая AJAX-библиотека, ориентированная на читаемость и гибкость. В отличие от других доступных библиотек, SuperAgent имеет простую кривую обучения. SuperAgent имеет объект запроса, который принимает такие методы, как GET, POST, PUT, DELETE и HEAD.

Преимущества суперагента
  • Она имеет среду и экосистему, основанные на плагинах, где можно создавать и разрабатывать расширения для добавления или расширения функциональности.
  • Легко регулируемый
  • Удобный интерфейс для HTTP-запросов.
  • Несколько функций для последовательной отправки запросов.
  • Он должен поддерживать отслеживание процесса загрузки и скачивания.
  • Он поддерживает фрагментированное шифрование при передаче данных.
  • Поддерживаются вызовы старого типа.
  • Для реализации многих распространенных функций доступно множество плагинов.
Отправить GET-запрос
request
.get('/user')
.query({ id: 1 })
.then(res => {
});
Отправить запрос на публикацию
request.post('/user')
.set('Content-Type', 'application/json')
.send('{"name":"Ipseeta","id":1}')
.then(callback)
.catch(errorCallback)

Результат

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться