10. diel - Dokumentácia k Node.js API
Táto lekcia poskytuje dokumentáciu pre API databázy filmov vrátane ukážkových požiadaviek a odpovedí. Bude vám užitočná hneď niekoľkokrát:
- Predstavenie API - Ak ste sem prišli ešte pred programovaním API, získate prehľad o tom, ako bude projekt fungovať a jeho tvorba pre vás bude potom jednoduchšia.
- Zhrnutie API - Po dokončení projektu táto lekcia zhŕňa jeho funkčnosť a pomáha zapamätanie princípov RESTful API.
- Tvorba klienta - Pokiaľ programujete klienta k tomuto API, napr. v kurzoch Základy React alebo Základy Angular frameworku, môžete si jednoducho overiť, či posielate správne štruktúrovanú požiadavku alebo aký bude od API formát odpovede.
- Tvorba servera - Pokiaľ programujete server v inej technológii, ale mal by fungovať s klientom, pôvodne tvoreným pre toto API (pozri bod vyššie), môžete si jednoducho skontrolovať, že vaše endpointy vracajú presne to, čo majú. Ako toho API pracujú napr. servery v kurzoch Spring Boot - Filmová databáza alebo ASP.NET Core Web API
API databáza filmov
API spravuje filmy, režisérov a hercov. Routovanie je RESTful (posielame teda požiadavky typu GET, POST, PUT a DELETE). Komunikácia prebieha vo formáte JSON. V prípade chyby API vráti chybový kód 4XX.
Ľudia
API nám umožňuje spravovať režisérov a hercov. Súhrnne o nich hovorí
ako o ľuďoch a líšia sa od seba iba atribútom role
.
Vytvorenie režiséra
Pošleme požiadavku POST na adresu
/api/people
, ktorá obsahuje JSON s dátami novej osoby. API vráti
ako odpoveď novo vytvorený objekt spolu s ID, ktoré mu priradilo.
Požadavek
{ "name": "James Cameron", "birthDate": "1954-08-16", "country": "Kanada", "role": "director", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ..." }
Odpověď
{ "name": "James Cameron", "birthDate": "1954-08-16T00:00:00.000Z", "country": "Kanada", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ...", "role": "director", "_id": "64047109b80ed070c5425fb8", "__v": 0 }
Vytvorenie herca
Pošleme požiadavku POST na adresu
/api/people
.
Požadavek
{ "name": "Dwayne Johnson", "birthDate": "1972-05-02", "country": "USA", "role": "actor", "biography": "Nejprve atlet a hráč amerického fotbalu, poté wrestler a následně herec." }
Odpověď
{ "name": "Dwayne Johnson", "birthDate": "1972-05-02T00:00:00.000Z", "country": "USA", "biography": "Nejprve atlet a hráč amerického fotbalu, poté wrestler a následně herec.", "role": "actor", "_id": "64047e10b3201657ed2b5977", "__v": 0 }
Výpis režisérov
Pošleme požiadavku GET na adresu
/api/directors
.
Odpoveď
[ { "_id": "64047109b80ed070c5425fb8", "name": "James Cameron", "birthDate": "1954-08-16T00:00:00.000Z", "country": "Kanada", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ...", "role": "director", "__v": 0 } ]
Výpis hercov
Pošleme požiadavku GET na adresu
/api/actors
.
Odpoveď
[ { "_id": "64047e10b3201657ed2b5977", "name": "Dwayne Johnson", "birthDate": "1972-05-02T00:00:00.000Z", "country": "USA", "biography": "Nejprve atlet a hráč amerického fotbalu, poté wrestler a následně herec.", "role": "actor", "__v": 0 } ]
Detail človeka
Pošleme požiadavku GET na adresu s ID človeka, napr.
/api/people/64047109b80ed070c5425fb8
.
Odpoveď
{ "_id": "64047109b80ed070c5425fb8", "name": "James Cameron", "birthDate": "1954-08-16T00:00:00.000Z", "country": "Kanada", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ...", "role": "director", "__v": 0 }
Úprava človeka
Pošleme požiadavku PUT na adresu s ID človeka, napr.
/api/people/64047109b80ed070c5425fb8
.
Požadavek
{ "name": "James Francis Cameron", "birthDate": "1954-08-16", "country": "Kanada", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ...", "role": "director" }
Odpověď
{ "_id": "64047109b80ed070c5425fb8", "name": "James Francis Cameron", "birthDate": "1954-08-16T00:00:00.000Z", "country": "Kanada", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ...", "role": "director", "__v": 0 }
Zmazanie človeka
Pošleme požiadavku DELETE na adresu s ID človeka, napr.
/api/people/64047109b80ed070c5425fb8
. Navrátený je odstránený
objekt.
Odpoveď
{ "_id": "64047109b80ed070c5425fb8", "name": "James Francis Cameron", "birthDate": "1954-08-16T00:00:00.000Z", "country": "Kanada", "biography": "Byl chudý řidič kamionu, když začínal. Je pětkrát ženatý ...", "role": "director", "__v": 0 }
Filmy
Vytvorenie filmu
Pošleme požiadavku POST na adresu
/api/movies
.
Požadavek
{ "name": "Star Wars VI", "year": 1983, "directorID": "64047109b80ed070c5425fb8", "actorIDs": ["63d27a785060fe3ab7c1df1a"], "isAvailable": true, "genres": ["sci-fi"] }
Odpověď
{ "name": "Star Wars VI", "year": 1983, "directorID": "64047109b80ed070c5425fb8", "actorIDs": [ "64047e10b3201657ed2b5977" ], "genres": [ "sci-fi" ], "isAvailable": true, "_id": "640471c9b80ed070c5425fbc", "dateAdded": "2023-03-05T10:41:13.608Z", "__v": 0 }
Detail filmu
Pošleme požiadavku GET na adresu s ID filmu, napr.
/api/movies/640471c9b80ed070c5425fbc
. Súčasťou odpovede API sú
pri filme ako ID režiséra a hercov (directorID
a
actorIDs
), tak zodpovedajúce objekty (director
a
kolekcia objektov actors
) s ID a menom.
Odpoveď
{ "_id": "640471c9b80ed070c5425fbc", "name": "Star Wars VI", "year": 1983, "directorID": "64047109b80ed070c5425fb8", "actorIDs": [ "64047e10b3201657ed2b5977" ], "genres": [ "sci-fi" ], "isAvailable": true, "dateAdded": "2023-03-05T10:41:13.608Z", "__v": 0, "director": { "_id": "64047109b80ed070c5425fb8", "name": "James Francis Cameron" }, "actors": [ { "_id": "64047e10b3201657ed2b5977", "name": "Dwayne Johnson" } ] }
Úprava filmu
Pošleme požiadavku PUT na adresu s ID filmu, napr.
/api/movies/640471c9b80ed070c5425fbc
.
Požadavek
{ "name": "Star Wars VI", "year": 1983, "directorID": "64047109b80ed070c5425fb8", "actorIDs": ["63d27a785060fe3ab7c1df1a"], "isAvailable": false, "genres": ["sci-fi"] }
Odpověď
{ "_id": "640471c9b80ed070c5425fbc", "name": "Star Wars VI", "year": 1983, "directorID": "64047109b80ed070c5425fb8", "actorIDs": [ "63d27a785060fe3ab7c1df1a" ], "genres": [ "sci-fi" ], "isAvailable": false, "dateAdded": "2023-03-05T10:41:13.608Z", "__v": 0 }
Zmazanie filmu
Pošleme požiadavku DELETE na adresu s ID filmu,
/api/movies/640471c9b80ed070c5425fbc
. Odpoveďou je odstránený
film.
Odpoveď
"_id": "640471c9b80ed070c5425fbc", "name": "Star Wars VI", "year": 1983, "directorID": "64047109b80ed070c5425fb8", "actorIDs": [ "63d27a785060fe3ab7c1df1a" ], "genres": [ "sci-fi" ], "isAvailable": false, "dateAdded": "2023-03-05T10:41:13.608Z", "__v": 0 }
Žánre
Validné hodnoty žánrov filmov ponúka API na stiahnutie ako jednoduchý zoznam.
Výpis žánrov
Pošleme požiadavku GET na adresu
/api/genres
.
Odpoveď
[ "sci-fi", "adventure", "action", "romantic", "animated", "comedy" ]
Pokiaľ ste na túto lekciu prišli ešte pred tvorbou API, môžete sa vrátiť na lekciu Kompletné RESTful API v Node.js.
V nasledujúcej lekcii, Bezpečnostné hrozby - Ako správne ukladať heslá v Node.js? , si vysvetlíme bezpečnostné hrozby spojené s ukladaním hesiel používateľov.