V tomto cvičení si vytvoříte vlastní chatovací aplikaci.
-
Vytvořte Vite/JSX projekt pomocí:
npm init kodim-app@latest chat jsx
-
Do stránky přidejte formulář s jedním textovým políčkem pro uživatelovu zprávu a tlačítkem pro odeslání.
-
Na konci souboru
index.jsx
přidejte posluchač událostisubmit
na formulář. V jeho obsluze zamezte výchozímu odeslání formuláře (preventDefault
).-
Obsah textového políčka zašlete na chatovací server.
- Endpoint:
https://czechichat.deno.dev/api/send-message
- Metoda:
POST
- Hlavička:
Content-Type: application/json
- Tělo: JSON objekt s vlastností
message
obsahující text zprávy
V JavaScriptu by odeslání zprávy mohlo vypadat následovně:
fetch('https://czechichat.deno.dev/api/send-message', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ message: 'Ahoj. Toto je moje první zpráva.', }), });
- Endpoint:
-
Ověřte si, že vaše zpráva se propsala i do chatovacího serveru na adrese czechichat.deno.dev.
-
-
Po odeslání formuláře uživateli vymažte obsah políčka, aby měl prostor pro zprávu novou.
-
K formuláři přidejte ještě jedno textové políčko na jméno. Nezapomeňte obě políčka označit štítkem
<label>
. -
Při odesílání formuláře přidejte do požadavku na server do těla zprávy ještě jméno jako vlastnost
name
.Tělo by mohlo vypadat takto:
{ name: 'Karel', message: 'Toto je moje první zpráva.', }
Obsah políčka se jménem uživateli nemažte. Pravděpodobně ho bude chtít použít i pro další zprávu.
-
Opět si ověřte, že se zpráva propisuje do serveru a tentokrát i se jménem.
-
Přidejte výpis zpráv ze serveru například jako odrážkový seznam ve tvaru
Jméno: text zprávy (datum)
.- Endpoint:
https://czechichat.deno.dev/api/list-messages
- Metoda: výchozí
GET
- Hlavičky: výchozí
- Tělo: žádné
Stahujte zprávy v pravidelných intervalech každé tři sekundy, aby uživatel viděl, když dorazí nová.
- Endpoint:
-
Stránku nastylujte.
Vytvoříme aplikaci, která umožní hlasovat pro jednotlivé možnosti na webu Hlasování. Pro tento účel si vyberte z nabídky jednu otázku, ve které budete hlasovat.
- Založte si nový Vite/JSX projekt příkazem
npm init kodim-app@latest cviceni-hlasovani jsx
- Otevřete si ve VS Code vytvořenou složku
cviceni-hlasovani
. - Prohlédněte si dokumentaci API pro hlasování a pomocí požadavku GET v prohlížeči najděte
id
otázky, kterou jste si ve skupině vybrali. - Na stránku přidejte tlačítko :i[Hlasovat]. Pověste na toto tlačíko posluchač a zatím na stisk pouze vypište něco do konzole pro ověření, že posluchač funugje.
- Při stisknutí tlačítka pošlete na API požadavek POST, který zahlasuje vaším jménem pro nějakou vámi zvolenou možnost. Jméno i možnost zatím budou zapsány natvrdo ve vašem kódu. Nezapomeňte posluchač události označit jako
async
. - Na stránce hlavní aplikace si ověřte, že se vám povedlo správně zahlasovat.
Pokračujte v aplikaci z předchozího příkladu. Mít jméno hlasujícího přímo v kódu je nepraktické. Umožníme tedy uživateli zadat si jméno dle libosti.
- V programu z minulého cvičení nahraďte hlasovací tlačítko formulářem, který bude obsahovat jedno textové políčko pro zadání jména.
- Při odeslání formuláře zahlasujte pro jednu možnost jménem, které zadal uživatel. Číslo možnosti, pro niž se hlasuje, bude stále natvrdo v kódu.
Naše aplikace Nákupy ještě neumí mazat položky seznamu. Do aplikace přidáme tlačítko, které odešle požadavek na smazání položky na server pomocí DELETE a překreslí komponentu.
- Vyjděte z kódu aplikace vytvořené na lekci. Použijte repozitář cviceni-nakupy-post jako šablonu pro vytvoření vlastního repozitáře, který si naklonujte.
- Nainstalujte závislosti příkazem
npm install
a pak spusťte vývojový server příkazemnpm run dev
. - V komponentě
ShopItem
je tlačítko, které bude sloužit ke smazání položky seznamu. - Vytvořte posluchač události
handleDelete
a připojte jej na tlačítko. Je to velmi podobné tomu, jak je vytvořen posluchačhandleSubmit
v hlavní stránce. Do vašeho posluchače zatím dejte napříkladconsole.log
, a vyzkoušejte, že funguje. - Udělejte posluchač rovnou
async
, ať jej máme připravený na volánífetch
. - Nyní je potřeba odeslat požadavek na server. Zavolejte funkci
fetch
, která pošle požadavek metodouDELETE
na adresu:Tělo požadavku (https://nakupy.czechitas.dev/api/:day/:id
body
) bude prázdné, vůbec jej neuvádějte. Nezapomeňte použít při autentizace své jméno. Po odeslání požadavku zavolejte funkciwindow.location.reload()
, pro obnovení stránky. - Vyzkoušejte, že vaše aplikace funguje a že je možné pomocí tlačítka Smazat smazat některou položku seznamu.
Pokračujte v aplikaci z předchozího příkladu. Rozšíříme náš nákupní seznam ještě o tlačítko Nakoupeno, které umožní označit položku jako zakoupenou.
Postup je velmi podobný jako v předchozím cvičení.
- Do aplikace přidejte tlačítko Nakoupeno.
- Založte
async
posluchač událostihandleDone
a vyzkoušejte, že se zavolá při stisknutí tlačítka. - V obsluze události pošlete autentizovaný
PATCH
požadavek na stejnou adresu jako v předchozím příkladuTentokrát je třeba odeslat toto JSON body:https://nakupy.czechitas.dev/api/:day/:id
{ "done": true }
- Opět vyzkoušejte, že aplikace funguje, a že můžete označit položku nákupu jako zakoupenou.