// На клиенте (JavaScript)
fetch('/some-route', {
method: 'POST',
body: JSON.stringify({ /* данные для отправки */ }),
headers: {
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
// Рендеринг данных на стороне клиента
const messageElement = document.getElementById('message');
messageElement.innerText = data.message;
})
.catch(error => console.error(error));
Что будет лучшелучше для кого? для бэка лучше меньше нагрузки. В каком случае меньше нагрузки?
Это плохо, потому что только он позволяет отслеживать прогресс загрузки.
Ванильный js это XMLHttpRequest. а fetch это высокоуровневая обертка.
Это плохо, потому что только он позволяет отслеживать прогресс загрузки
fetch(shit).then(r => r.json())
бесит. Axios же построен на xmlhttp и часть более современных фич там просто физически отсутствует. А можете рабочий пример привести на fetch прогресса загрузки файла на сервер?
Собственно идеальная либа будет вынуждена юзать и fetch и xmlhttp, потому что в первом тоже отсутствует часть "старых и ненужных" фич.:)
const file = document.querySelector('input[type="file"]').files[0];
const totalBytes = file.size;
let bytesUploaded = 0;
await fetch("<upload file url>", {
method: "PUT",
headers: {
"Content-Type": "<file content type>"
},
body: file.stream().pipeThrough(new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk);
bytesUploaded += chunk.byteLength;
// report progress
},
flush(controller) {
// report finish
},
})),
duplex: "half", // нужно так как у нас не ReadableStream а TransformStream в body
});