Chcem aplikáciu. Najlepšie rýchlo a zadarmo! (Návrh REST API architektúry)

Nanooq IT
Nanooq IT
Jul 28, 2017 · 3 min read

Predstavte si situáciu, kedy máte nápad a jediné, čo chcete je rýchlo vyvinúť aplikáciu. Situáciu, kde každú zmenu v aplikácii implementujete behom pár hodín, namiesto pár dní. Situáciu, kde môžete reagovať na zmeny požiadaviek užívateľov automaticky bez nutnosti preprogramovať polovicu serverovej logiky aplikácie. Situáciu, keď nastane krízový stav, vy zistíte chybu a následne ju okamžite odstránite. Situáciu, keď potrebujete pristupovať k dátam aplikácie aj bez prístupu k internetovému pripojeniu.

Doteraz takmer nemožný stav

Ešte donedávna odpoveď na vyššie uvedené otázky nebola jednoznačná alebo bola prakticky neuskutočniteľná. Problémom zdĺhavého vývoja aplikácií je návrh databázovej schémy, ktorý predstavuje najdôležitejšiu časť aplikácie v závislosti od konkrétnej DB a zvoleného frameworku. Pri zlom návrhu je implementovať zmeny pomerne časovo náročné a rovnako je jasné, že v budúcnosti zmeny v databáze nastanú aj priamo rozširovaním aplikácie. Každá zmena a rozšírenie databázovej schémy patrí k časovo najnáročnejším úlohám vo fáze vývoja, nehovoriac o tom, ak aplikácia nie je navrhnutá modulárne a sémanticky správne, čo bohužiaľ v súčastnosti nie je takmer žiadna.

Existuje jednoduché riešenie

Riešením tohto problému je nový spôsob vývoja nazývaný Single Page Applications, ktorý sa začal používať v roku 2013 a v súčasnosti sa stáva čoraz populárnejším. Hlavným rozdielom medzi Single Page Aplikáciou a tradičnou aplikáciou je, že SPA prechádza z logiky servera na logiku klienta. Kompletná aplikačná logika aplikácie je napísaná na strane klienta najčastejšie pomocou JavaScriptu, ktorý beží v prehliadači. Všetky potrebné zdroje ako HTML, CSS a JavaScript sú získané pri prvom načítaní webovej stránky. Je potrebné definovať si iba server pre čítanie dát z databáz. Všetky žiadosti vychádzajú z jedného centrálneho bodu prostredníctvom rozhrania REST API cez HTTP požiadavky servera, ktorý čaká na odpoveď.

V tomto seriály vám ukážem aké jednoduché je vyvinúť komplexnú webovú aplikáciu s plnou funkcionalitou behom pár dní alebo týždňov v závislosti od rozsahu a špecifikácie vašej aplikácie. Budem vychádzať z predchádzajúceho článku, kde som predstavila základné princípy REST API.

Seriál sa bude skladať z nasledujúcich častí:

  1. Návrh a definovanie REST API rozhrania, ktoré bude posielať požiadavky do databázy a s tým priamo spojený aj návrh API aplikácie, s ktorým budú môcť v budúcnosti komunikovať ostatné aplikácie,
  2. Návrh databázovej schémy v NoSQL databáze MongoDB
  3. Konfigurácia logiky servera vo webovom Python frameworku Flask
  4. Definovanie a spracovanie logiky klienta pomocou frameworku Angularjs a knižnice Backbone.js
  5. Vykresľovanie šablón aplikácie pomocou frontendového frameworku Bootstrap
  6. Ukladanie odpovede pre väčšiu efektívnosť do HTML5 LocalStorage
  7. Návrh a definovanie REST API rozhrania

Počas svojho života som navrhla viacero systémov a aplikácií počnúc od objektovo — orientovaného návrhu, prešla som si fázou Enterprise Architect Application, objektovo — relačné mapovanie dát do databázy, sémantickým návrhom aplikácií založených na ontológii až nakoniec v súčasnosti skúšam vývoj Single Page Aplikácie a objavujem krásu návrhu RESTful API. Návrhu sa venuje väčšinou projektant API.

Čo práca projektanta REST API vlastne zahŕňa? Ako prvé je dôležité uvedomiť si skutočnosť, že API neexistuje izolovane, ale na strane druhej tvorí funkčnosť aplikácie, ktorá existuje nezávisle na API. Je nutné definovať si funkcie, ktoré sú potrebné narozdiel od tých, ktoré nie je nutné do návrhu zahrnúť. V návrhu by mali byť však zahrnuté všetky prípady použitia. Na začiatku je dôležité definovať si Resources, s ktorými budeme chcieť pracovať. Najdôležitejšie je určiť koreňovú URL adresu pre prístup ku všetkým požiadavkám. V našom seriály si definujeme root URL v nasledujúcom tvare:

http://[hostname]/fakulty/api/v1.0

Je dobrým zvykom zahrnúť názov aplikácie a verzie API ako súčasť URL adresy, vrátane menného priestoru, ktorý slúži ako hlavný identifikátor služby od ostatných bodov spustených v aplikácii. Taktiež je dobré uviesť verziu URL adresy, čo sa vyplatí aj do budúcnosti pre budúcu aktualizáciu verzií, bez nutnosti zasahovať do aplikácie a starších definícií. Ďalším krokom je definovanie zdrojov REST API. Keďže my vyvíjame jednoduchú aplikáciu definovala som tabuľku základných požiadaviek nasledovne:

HTTP metóda

http://[hostname]/fakulty/api/v1.0/studenti

Vráti zoznam všetkých študentov z danej fakulty

http://[hostname]/fakulty/api/v1.0/studenti/[student_id]

Vráti konkrétneho študenta z konkrétnej fakulty

http://[hostname]/fakulty/api/v1.0/studenti

Vytvorí nový zoznam študentov

http://[hostname]/fakulty/api/v1.0/studenti/[student_id]

Vytvorí a pridá konkrétneho študenta na konkrétnu fakultu

http://[hostname]/fakulty/api/v1.0/studenti/[student_id]

Upraví existujúce údaje o študentovi

http://[hostname]/fakulty/api/v1.0/studenti/[student_id]

Vymaže študenta

Nanooq IT

Written by

Nanooq IT

We write about our work, ideas, projects and interesting IT topics

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade