\section{Visszatekintés} \begin{frame}{Miről volt szó múlt héten?} \footnotesize Az első héten megismertük a webes kommunikáció alapköveit (HTTP, Node.js, npm), a másodikon pedig ezekre építve megírtuk az első valódi backend kódunkat: Express.js-szel útvonalakat (route-okat) hoztunk létre, Postmannel kipróbáltuk őket, és belekóstoltunk a TypeScriptbe is. \begin{itemize} \item \textbf{Express.js:} \texttt{app.get/post/put/delete} route-ok, middleware-ek, \texttt{express.Router()} \item \textbf{Routing:} \texttt{req.params}, \texttt{req.query}, \texttt{req.body} kezelése, JSON válaszok \item \textbf{Postman:} kérések összeállítása és tesztelése kód írása nélkül \item \textbf{TypeScript:} alaptípusok, egy egyszerű interfész, fordítás \texttt{tsc}-vel \end{itemize} \begin{block}{A hiányzó darab} Múlt héten \emph{gyakorlati megérzés} alapján neveztük el az útvonalainkat és szerveztük a kódunkat. Ez működött, de nem feltétlenül a legjobb, legkövetkezetesebb módon -- ma megnézzük, milyen \emph{tervezési elvek} állnak a jó API-k és a jó backend-architektúrák mögött. \end{block} \end{frame} \begin{frame}{Mi a célja a mai órának?} \footnotesize A mai anyag három, egymásra épülő témát dolgoz fel: hogyan tervezzünk jól használható API-kat, hogyan szervezzük a backend kódunkat rétegekbe, és hogyan válasszuk szét az írási és olvasási műveleteket, ha a rendszerünk ezt megkívánja. \begin{itemize} \item \textbf{REST API alapok} -- hogyan tervezzünk következetes, könnyen használható API-t \item \textbf{Architekturális felépítések} -- hogyan szervezzük a backend kódunkat rétegekbe, hogy karbantartható maradjon \item \textbf{CQRS} -- mikor éri meg szétválasztani az írási és olvasási műveleteket \end{itemize} \begin{alertblock}{Fontos} A múlt héten megírt Express.js route-jaink jó kiindulópontok, de a mai órán \emph{visszamenőleg is} átgondoljuk őket: melyik URL-t neveznénk most másképp, hol hiányzik egy réteg, hol keverednek a felelősségek. A "miért így?" kérdésre keressük a választ, hogy a jövőben már tudatosan jól tervezett kódot írjunk. \end{alertblock} \end{frame}