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.jsxpřidejte posluchač událostisubmitna 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í
messageobsahují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
idotá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 installa pak spusťte vývojový server příkazemnpm run dev. - V komponentě
ShopItemje tlačítko, které bude sloužit ke smazání položky seznamu. - Vytvořte posluchač události
handleDeletea připojte jej na tlačítko. Je to velmi podobné tomu, jak je vytvořen posluchačhandleSubmitv 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 metodouDELETEna adresu:Tělo požadavku (https://nakupy.czechitas.dev/api/:day/:idbody) 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
asyncposluchač událostihandleDonea vyzkoušejte, že se zavolá při stisknutí tlačítka. - V obsluze události pošlete autentizovaný
PATCHpož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.
