⊗jsrxPmSDCl 44 of 57 menu

Mteja wa Programu kwenye Redux

Katika masomo yaliyopita, karibu tumemaliza kazi na sehemu ya seva kwa programu yetu, tutaiongeza kidogo kadri inavyohitajika katika masomo yafuatayo. Sasa tunahitaji kuunda mteja wa programu, ambaye atatumie maombi ya HTTP kwa seva.

Wacha tufungue programu yetu ya bidhaa na katika folda api tuunde faili client.js. Kwa kuanza, tutaandika function client yenyewe, ambayo itafanya kazi kwa maombi ya GET na POST. Itapokea njia, aina, na mwili wa ombi (katika kesi ya POST), ikiwa kuna hiyo:

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

Ifuatayo tunahitaji kuunda kitu options, ambacho tutapitia taarifa mbalimbali kwa ombi. Hii itakuwa aina ya ombi na vichwa:

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

Sifa body yetu ni hiari, tunapaswa kuipitisha, ikiwa tuna ombi la POST. Kwa hili ndani ya client baada ya msimbo wa kitu options tutaiongeza kwenye options na mwili wa ombi kwa muundo JSON, ikiwa njia ya POST imechaguliwa:

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

Kisha chini katika msimbo wa client tutapanga kipande try, katika mstari wake wa kwanza kwa kutumia fetch tutapata jibu kutoka kwa seva. Katika kesi ya kushindwa tutarudisha ahadi na hitilafu:

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

Sasa wacha tuandikishe msimbo katika kipande try. Baada ya kupata response, tunahitaji kuitayarisha. Tutatoa data yake kwa JSON na ikiwa hali ya jibu inatuonyesha kuwa yote yako sawa, basi tutarudisha kitu na data na taarifa: hali, vichwa na anwani. Ikiwa hali sio 'ok', basi tutatupa isipokuwa na maandishi ya hali:

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) }

Msimbo wa function client umeandaliwa, inabaki tu kuandika jinsi njia zetu GET na POST zitakavyofanya kazi wakati wa mwito. Wacha tuandike msimbo kwa ajio yao baada ya function client. Njia client.get itachukua kama kigezo njia na kuita function client, ikimpa hii njia na aina ya ombi GET:

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

Na client.post inapaswa kupitisha kwa client njia, aina ya ombi POST na mwili wa ombi:

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

Haya yote, mteja wetu mdogo umeandaliwa kwa kufanya kazi na seva.

Fungua programu yako ya wanafunzi, unde ndani yake katika folda api faili client.js. Ukishasomea nyenzo za somo andika (nakili) msimbo wa function client na njia zake mbili client.get na client.post.

uzptdatrro