Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
⊗jsrxPmSDCl 44 of 57 menu

Кліент для прыкладання ў Redux

На мінулых занятках мы практычна завяршылі працу з сервернай часткай для нашага прыкладання, мы крыху дапоўнім яе па меры неабходнасці у наступных уроках. Цяпер нам неабходна стварыць кліента для прыкладання, які будзе адпраўляць HTTP-запыты на сервер.

Адчынём наша прыкладанне з прадуктамі і у папцы api створым файл client.js. Для пачатку мы напішам самую функцыю client, якая будзе працаваць і для GET і для POST запытаў. Параметрамі яна будзе атрымліваць шлях, тып і цела запыту (у выпадку POST), калі таковае маецца:

export async function client(url, method, body = {}) {}

Далей нам трэба сфармаваць аб'ект options, у якім мы будзем перадаваць розную інфармацыю для запыту. Гэта будзе тып запыту і загалоўкі:

export async function client(url, method, body = {}) { const options = { method: method, headers: { 'Content-Type': 'application/json', }, } }

Уласцівасць body у нас апцыянальна, мы павінны перадаваць яго, калі ў нас POST-запыт. Для гэтага ўнутры client пасля кода для аб'екта options дадамо яго ў options з целам запыту ў фармаце JSON, калі абраны метад POST:

if (method === 'POST') { options.body = JSON.stringify(body) }

Затым ніжэй у кодзе client арганізуем блок try, у першай строчцы якога з дапамогай fetch атрымаем адказ ад сервера. У выпадку няўдачы мы традыцыйна вернем проміс з памылкай:

let data try { const response = await window.fetch(url, options) } catch (err) { return Promise.reject(err.message ? err.message : data) }

Цяпер дадапоўнім код у блоке try. Пасля атрымання response, нам трэба яго апрацаваць. Вынямем з яго даныя ў JSON і калі статус адказу сігналізуе нам, што ўсё ў парадку, то вернем аб'ект з данымі і інфармацыяй: статусам, загалоўкамі і адрасам. Калі ж статус не 'ok', то выкінем выключэнне з тэкстам статусу:

try { const response = await window.fetch(url, options) data = await response.json() if (response.ok) { return { status: response.status, headers: response.headers, url: response.url, data, } } throw new Error(response.statusText) }

Код для функцыі client у нас гатовы, засталася толькі напісаць як будуць працаваць нашы метады GET і POST пры выкліку. Давайце напішам код для іх пасля функцыі client. Метад client.get будзе прымаць у якасці параметра шлях і выклікаць функцыю client, перадаючы ёй гэты шлях і тып запыту GET:

client.get = (url) => client(url, 'GET')

А client.post павінен перадаваць для client шлях, тып запыту POST і цела запыту:

client.post = (url, body) => client(url, 'POST', body)

На гэтым усё, наш маленькі кліент гатовы да працы з серверам.

Адчыніце ваша прыкладанне са студэнтамі, стварыце ў ім у папцы api файл client.js. Азнаёміўшыся з матэрыяламі уроку напішыце (скапіюйце) код функцыі client і двух яе метадаў client.get і client.post.

byenru