Express 2

25. hodina DVOP WBB


Matěj Cajthaml — SSPŠ

©

Opakování

Co je to Express?
Jaké máme možnosti tvorby cest v Expressu?
Jak fungují parametry v Expressu?
Co je to endpoint?
Co se nachází uvnitř HTTP požadavku?

Připomenutí Expressu

Práce

Připomeňme si, jak se s Express pracuje.

Bezpečenost

Minulou hodinu jsme měli problém s posíláním požadavků v prohlížeči. Kdo nám je zakázal posílat?

Jaké problémy by mohlo způsobit to, že dovolíme jakékoliv doméně posílat požadavky najakoukoliv doménu?

CORS

  • = Cross-origin resource sharing
  • mechanismus zabezpečení webové stránky
  • každý server si může říct, jaké domény mají k datům přístup
  • prohlížeč potom tyto nastavení kontroluje

CORS hlavičky

  • Access-Control-Allow-Origin: https://cajthaml.eu
  • Access-Control-Allow-Origin: *
  • odesílá server např. při požadavku OPTIONS

Hlavičky

Práce

Zjistěte, k čemu slouží:

  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods

CORS kontroluje prohlížeč. Může jej kontrolovat jakýkoliv klient, např. i Node.js server?

Balíček cors

  • dokumentace
  • automaticky posílá hlavičky při požadavcích

Content Security Policy

Práce

Zjistěte si, co je to Content Security Policy. Jak se liší oproti CORS?

Voláni API ze stránek

Práce

Vytvořme stránku a příslušné API složené ze dvou částí:

  • přidávání dat: pomocí formuláře přidáme data
  • čtení dat: můžeme data zobrazit

Hostování stránek

Co kdybychom nechtěli mít více serverů na API a hosting stránek? Lze to udělat nějak v Expressu?

A co když to nebude jeden soubor, ale více souborů a assetů?

Hostování stránek

Práce

Zhostujeme si naší statickou stránku pomocí express.static.

Souborový systém

Soubory v Node.js

  • knihovna fs v Node.js
  • asynchronní a synchronní akce
  • práce se složkami a soubory

Jak přistupujeme k souborům v prohlížeči?

Ukážeme si práci s FS.

Souborová paměť

Práce

Naší aplikaci přepíšeme do souborové paměti, aby se po restartu serveru data neztratila.

Je dobré ukládat naše data v plaintextu?

JSON v JS

  • JSON.parse(`...`)
  • JSON.stringify({...})

Další práce

  • TODO list
  • Fronta a její zpracování
  • Soubory

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/