Uchakataji wa Ombi la POST, Liliotumwa Kwa Kutumia Thunk katika Redux
Sisi pamoja tumepata data ya bidhaa na wauzaji kutoka kwa seva na kuionyesha kwenye programu. Lakini kwa kutumia thunk unaweza sio tu kupata, bali pia kutuma data. Hebu tujue jinsi ya kufanya hivyo.
Baada ya kuongeza bidhaa mpya, inabaki kwetu kwenye duka, yaani ndani ya programu yetu. Hebu tufanye hivi, ili bidhaa mpya ihifadhiwe kwenye seva.
Wacha tuanze na seva. Hapa itatubidi tuchakate sio GET, bali ombi la POST, kwani kwenye seva sasa data ya bidhaa itawasili, ambayo tutaihifadhi pale.
Wacha tufungue programu yetu ya bidhaa, na kwenye
hayo faili server.js. Tutaipata ndani yake safu
handlers na tuongeze kichakataji kingine
kwa ombi la POST. Hapa tuta
kubali pia mwili wa ombi, kwa hivyo
katika kitendo kilichorudiwa tunapaswa kupitisha request:
http.post('/fakeServer/products', async ({ request }) => {})
Sasa kwenye mabano ya curly tuandike msimbo
wa kitendo chetu kilichorudiwa. Kwa kuanza tutatofautisha data
ya ombi na katika kesi ya hitilafu tutatuma kutoka kwa seva
jibu, kwamba hatukuweza kuhifadhi data na
na hali 500:
http.post('/fakeServer/products', async ({ request }) => {
const data = await request.json()
if (data.content === 'error') {
await delay(ARTIFICIAL_DELAY_MS)
return new HttpResponse('kosa la kuokoa seva', {
status: 500,
headers: {
'Content-Type': 'application/json',
},
})
}
})
Ikiwa data iko sawa, basi kwenye hifadhi data
tutampata muuzaji kulingana na kitambulisho, ambacho
kimefika kwenye ombi na tumuandikie muuzaji huyo
kwenye data (data ya muuzaji hata hivyo yetu pia
imehifadhiwa kwenye seva ;) ):
const seller = db.seller.findFirst({
where: { id: { equals: data.seller } },
})
data.seller = seller
Ifuatayo kwenye hifadhi data tutaunda kwa hii bidhaa kitu na athari. Na sasa, ukiwa na sehemu zote muhimu za bidhaa, tuunde kwenye hifadhi data na bidhaa yenyewe:
data.reactions = db.reaction.create()
const product = db.product.create(data)
Wacha tuweke kucheleweshwa na kwenye mstari wa mwisho wa msimbo kwa kitendo chetu kilichorudiwa turudishe jibu na bidhaa:
await delay(ARTIFICIAL_DELAY_MS)
return HttpResponse.json(serializeProduct(product))
Hapa tumemaliza kabisa na seva na hatuturejeei tena.
Kwa njia, jingine la kufaa. Baada ya mstari
export const worker = setupWorker(...handlers)
unaweza kuongeza msimbo ufuatao:
worker.listHandlers().forEach((handler) => {
console.log(handler.info.header)
})
Na sasa utaweza kuona matokeo ya kila kichakataji kinachofanya kazi kwenye konsoli ya kivinjari.
Bila shaka seva yetu sio ya kweli na ikiwa tuta walazimisha kusasisha ukurasa kwenye kivinjari, basi vitu vyetu vyote vipya vya bidhaa vitatoweka.
Fungua programu yako ya wanafunzi.
Fungua ndani yake faili server.js. Ongeza
kwenye safu handlers uchakataji wa ombi la POST.
Kwenye mwili wa ombi hili utakubali
data ya mwanafunzi mpya aliyeongezwa.
Kwenye mwili wa kitendo kilichorudiwa kwa http.post yako
Fungua data na katika kesi ya hitilafu tuma
jibu linalofanana.
Ikiwa yote iko sawa, basi tafuta kwenye hifadhi data
mwalimu kulingana na kitambulisho kilichopatikana na uandike
yeye kwenye data. Andika pia kwenye data,
kitu kilichoundwa kulingana na hifadhi data
votes.
Kulingana na data iliyokusanywa unda kitu
student na mwanafunzi mpya na
umtume kwenye jibu la seva.