Cvičení – parametry směrování a dotazu
Jako technik společnosti Tailwind Traders vytvořte rozhraní API tak, aby byla efektivní jak pro server, tak pro klienta omezením množství dat odesílaných nebo vrácených z rozhraní API.
Data se obvykle nacházejí v databázi nebo jiném úložišti. Velikost dat může být obrovská. Když uživatel požádá o všechna data produktů, může odpověď být tisíce nebo dokonce miliony záznamů. Takový požadavek velice zatěžuje databázi. Obsluha a vykreslení odpovědi na klientovi také trvá dlouhou dobu.
Pokud se chcete ho vyhnout, je vhodné omezit velikost odpovědi:
- Použití parametrů trasy k zadání konkrétního záznamu
- Pokud chcete specifikovat podmnožinu záznamů, použijte parametry dotazu.
V tomto cvičení se naučíte obě techniky.
Otevření projektu ve vývojovém kontejneru
Spusťte proces vytvoření nového prostředí GitHub Codespace ve
main
větviMicrosoftDocs/node-essentials
úložiště GitHub.Na stránce Vytvořit kódspace zkontrolujte nastavení konfigurace codespace a pak vyberte Vytvořit nový prostor kódu.
Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.
Otevřete nový terminál v codespace.
Ověřte, že je ve vašem prostředí nainstalovaný Node.js:
node --version
Zavřete terminál.
Zbývající cvičení v tomto projektu probíhají v kontextu tohoto vývojového kontejneru.
Nastavení souborů pro projekt
Pokud chcete zkontrolovat projekt pro tento modul, otevřete
./nodejs-http/exercise-express-routing/parameters
složku v editoru kódu.Adresář parametrů by měl obsahovat tyto soubory:
Soubor Účel app.js
Tento soubor obsahuje aplikaci Express. package.json
Tento soubor obsahuje závislosti projektu. package-lock.json
Tento soubor obsahuje přesné verze závislostí. V Průzkumníku
/nodejs-http/exercise-express-routing/parameters
souborů klikněte pravým tlačítkem myši na název složky a vyberte Otevřít v integrovaném terminálu.V terminálu spusťte následující příkaz, který nainstaluje závislosti projektu:
npm install
Otevřete soubor app.js a prohlédněte si ho. Soubor by měl vypadat takto:
const express = require('express') const app = express() const port = 3000 const products = [ { id: 1, name: "Ivanhoe", author: "Sir Walter Scott", }, { id: 2, name: "Colour Magic", author: "Terry Pratchett", }, { id: 3, name: "The Bluest eye", author: "Toni Morrison", }, ]; app.get('/', (req, res) => res.send('Hello API!')); app.get("/products/:id", (req, res) => {}); app.get('/products', (req, res) => {}); app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));
Tento kód JavaScriptu vytvoří základní Express.js server. Definuje pole
products
a nastaví tři trasy: root (/
),/products/:id
a/products
. Server naslouchá na portu 3000. Trasy/products/:id
a/products
jsou zástupné symboly bez funkcí.Data jsou pevně zakódovaná, aby se cvičení zjednodušilo. Ve skutečném scénáři by data pocházejí z databáze nebo jiného úložiště.
Implementace trasy produktu pro vrácení jednoho produktu
Kód obsahuje aplikaci Expressu. Dalším krokem je implementace dvou tras:
/products/:id
: Tato trasa by měla vrátit jeden produkt./products
: Tato trasa by měla vrátit všechny produkty nebo tolik produktů, které parametry dotazu požaduje.
Pokud chcete implementovat trasu
/products/:id
, vyhledejte v adresáři parametrů následující kód v souboru app.js:app.get("/products/:id", (req, res) => {});
Nahraďte ji následujícím kódem:
app.get("/products/:id", (req, res) => { res.json(products.find(p => p.id === +req.params.id)); });
V terminálu spusťte aplikaci spuštěním následujícího příkazu:
node app.js
Když se v editoru Visual Studio Code zobrazí oznámení o otevření prohlížeče, vyberte Otevřít v prohlížeči.
Na konec adresy URL přidejte následující:
/products/1
Výstup je:
{ "id": 1, "name": "Ivanhoe", "author": "Sir Walter Scott" }
Gratulujeme! Správně jste implementovali trasu. Aplikace k vyhledání konkrétního produktu používá parametr
id
trasy.V terminálu ukončete aplikaci stisknutím kombinace kláves Ctrl+C.
Implementace trasy produktů pro vrácení seznamu produktů
Pokud chcete implementovat trasu
/products
, vyhledejte následující kód:app.get("/products", (req, res) => {});
Nahraďte ji následujícím kódem:
app.get("/products", (req, res) => { const page = +req.query.page; const pageSize = +req.query.pageSize; if (page && pageSize) { const start = (page - 1) * pageSize; const end = start + pageSize; res.json(products.slice(start, end)); } else { res.json(products); } });
V terminálu spusťte následující příkaz, který spustí aplikaci a otestuje kód:
node app.js
Když se v editoru Visual Studio Code zobrazí oznámení o otevření prohlížeče, vyberte Otevřít v prohlížeči.
Na konec adresy URL přidejte následující:
/products?page=1&pageSize=2
Výstup je:
[{ "id": 1, "name": "Ivanhoe", "author": "Sir Walter Scott" }, { "id": 2, "name": "Colour Magic", "author": "Terry Pratchett" }]
V odpovědi se zobrazí první dva ze tří záznamů. Tato odpověď znamená,
page
že parametry dotazu apageSize
vyfiltrovaly velikost odpovědi z úplného seznamu na dvě položky.Změňte adresu URL tak, aby používala následující trasu,
products?page=2&pageSize=2
abyste změnili počet stránek z jedné na dvě. Odpověď je:[{ "id": 3, "name": "The Bluest eye", "author": "Toni Morrison" }]
Protože kód obsahuje pouze tři záznamy, měla by druhá stránka obsahovat pouze jeden záznam.
- V terminálu ukončete aplikaci stisknutím kombinace kláves Ctrl+C.
Teď jste úspěšně použili parametry dotazu, abyste omezili odpověď.