API pro meteostanici

Napište jednoduché GraphQL nebo REST API, s kterým bude komunikovat meteostanice. Meteostanic je víc, každá meteostanice má polohu zadanou v GPS souřadnicích a udržuje informaci o aktuálním stavu baterie. Tyto informace by měly být dostupné i na API. Meteostanice v pravidelných intervalech posílá na API data o teplotě, vlhkosti a atmosférickému tlaku. Aby nebylo tak snadné podvrhnout komunikaci s API serverem, každá stanice se autentizuje svým unikátním API klíčem. Poslední entitou, se kterou bude naše aplikace pracovat, je administrační uživatel. Takový uživatel se musí vůči serveru opět nějakým způsobem autentizovat, má možnost vytvářet nové meteostanice a upravovat a mazat pouze ty, které on sám v minulosti vytvořil. Přehled všech stanic a záznamů atmosférických dat bude bez omezení veřejný. Zároveň umožníme na API jednoduchou filtraci dat podle času.

K implementaci využijte Python3 a ideálně framework Flask nebo FastAPI. Podle vlastního uvážení využijte vhodnou databázi pro tento typ úlohy.

Co se touto úlohou naučím a o čem si něco přečíst?
  • GraphQL a REST přístup k API.
  • Návrh jednoduchého databázového schématu.
  • Základní HTTP komunikace a aplikační server.
Kde se s touhle úlohou typově setkám?
  • Tam, kde je potřeba zajistit komunikaci více komponent mezi sebou.
  • Webové aplikace jsou dnes často psány jako single page či isomorfní aplikace v javascriptu. Taková aplikace běží v prohlížeči uživatele a ptá se API pouze na data, která má vykreslit. Tímto se šetří prostředky serverů, protože není potřeba renderovat webovou stránku na serveru a snižuje se objem přenášených dat po síti.
Úroveň znalostí
Středně pokročilý