Fetch - полезный инструмент, который позволяет нам взаимодействовать и управлять базой данных с помощью Javascript. В этом блоге мы объясним выполнение действий CRUD с помощью fetch. CRUD означает создание, чтение, обновление и удаление. Итак, мы можем использовать выборку для создания объектов в базе данных, чтения этих объектов, обновления этих объектов и удаления этих объектов.

fetch(“urlOfDatabase", {
method: ‘
HTTP verb’,
headers: {‘Content-Type’: ‘
dataType’, 'Accept': 'dataType'},
body: JSON.stringify(
dataToSendBack) })

.then(response => response.json())

.then((data) => {dataWeSent})

(Код, выделенный жирным шрифтом, обозначает синтаксис, а код, выделенный жирным шрифтом, - заполнители.)

Сначала мы извлекаем данные из базы данных.

fetch() принимает два аргумента; URL-адрес и объект. URL-адрес связывает приложение с базой данных, которую мы хотим использовать. Объект содержит заголовки, тело и метод (есть и другие атрибуты, которые могут быть назначены, но для простой выборки; достаточно метода, заголовков и тела). В случае действия чтения аргумент объекта не требуется и для Необходимо удалить только атрибут метода действия.

Метод

method: будет использовать глагол HTTP. Глаголы HTTP - это методы, предназначенные для выполнения запросов к серверу. Пять HTTP-глаголов, которые мы будем использовать для выполнения выборки: публиковать, получать, помещать, исправлять и удалять.

HTTP-глаголы, которые мы используем для каждого действия CRUD:

В случае создания мы будем использовать method: ‘POST’.

В случае чтения мы будем использовать method: ‘GET'.

В случае обновления мы будем использовать method: ‘PUT' иmethod: ‘PATCH'.

Для удаления мы использовали бы method: ‘DELETE'.

Обновление использует другой HTTP-глагол в зависимости от того, что мы обновляем. Если мы обновляем весь элемент в базе данных, мы используем PUT. Если мы обновляем только часть элемента, мы используем PATCH.

Заголовки

headers позволяет серверу знать, какой тип информации мы отправляем, а также какой тип информации мы принимаем обратно. В этом случае мы отправляем строки json, поэтому мы используем ‘Content-Type’: ‘application/json. Мы ожидаем, что ответ также будет в формате json, поэтому мы используем 'Accept': 'application/json'.

Тело

body будет содержать данные, которые мы создали и хотим отправить в базу данных. Поскольку мы используем данные json для связи с базой данных, нам нужно будет преобразовать все наши данные в строку перед отправкой body: JSON.stringify(dataToSendBack). Данные для отправки обратно будут содержать данные, которые мы хотели бы создать, поместить или исправить.

Затем мы хотим превратить ответ, который мы получаем из базы данных, в нашу выборку, чтобы он был объектами json. Чтобы преобразовать ответ в объекты json, мы используем код .then(response => response.json()).

Как только у нас будет наш json-объект, мы захотим добавить его на страницу. Итак, мы бы позвонили .then((data) => {dataWeSent}). data - это данные, которые мы получаем после преобразования ответа в json. dataWeSent - это то место, где мы могли бы применить нашу логику к тому, как мы хотим представить эти данные.

Пример действия create с использованием выборки;

fetch(“http://localhost:3000/foxes", {
method: “POST”,
headers: {“Content-Type”: “application/json”,
“Accept”: “application/json”},
body: JSON.stringify( {name: nameOfTheFox, img_url: imageOfTheFox} ) })
.then(res => res.json())
.then((foxObject) => {foxesUL.innerHTML += `<li data-id=${foxObject.id} >${foxObject.name}</li>`})

Обратите внимание, что мы использовали HTTP-глагол POST для действия create. Мы также должны были снабдить базу данных заголовком и телом.

Пример действия чтения с использованием выборки;

fetch(“http://localhost:3000/to_do_items")
.then(res => res.json())
.then(arrOfItems => {arrOfItems.forEach((item) => {makeJSONIntoLI(item)})

Обратите внимание, что здесь нет команды HTTP, потому что по умолчанию fetch выполняет “GET”. Также нет второго аргумента после URL-адреса, потому что мы не отправляем данные в базу данных, поэтому нам не нужно предоставлять базе данных какой-либо заголовок или тело.

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

fetch(`http://localhost:3000/to_do_items/${ id }`, {
method: “PATCH”,
headers: headers: {“Content-Type”: “application/json”,
“Accept”: “application/json”},
body: JSON.stringify({done: done})})
.then(res => res.json())
.then(data => {dataRendered})

Обратите внимание, что мы использовали HTTP-глагол PATCH. Нам также пришлось снабдить базу данных заголовком и телом. Если бы мы внесли более крупные изменения в объект, нам пришлось бы использовать HTTP-команду “PUT”.

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

fetch(`http://localhost:3000/to_do_items/${ id }`, {method: “DELETE”})

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