Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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
Vidíme, že dokumentácia je skrátka dobrá praktika, preto aj vy pre svoje API vytvárajte podobnú dokumentáciu, ako je táto. Môžete k tomu využiť automatizované nástroje alebo ju napísať ručne. Poďme si API popísať.

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.


 

Predchádzajúci článok
Dokončenie API v Node.js - Metódy GET a PUT
Všetky články v sekcii
Node.js
Preskočiť článok
(neodporúčame)
Bezpečnostné hrozby - Ako správne ukladať heslá v Node.js?
Článok pre vás napísal Martin Macura
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity