Vysvětlení adres URL a tras

Dokončeno

Aplikace má řadu dat, která spravuje, jako jsou produkty nebo objednávky. Jako vývojář pro Tailwind Traders uspořádejte svá rozhraní API do oddílů pro typ dat. Používání oddílů vám pomůže udržovat a rozšířit aplikaci.

Snadný způsob, jak rozšířit webovou aplikaci, je zajistit, aby byla data přístupná prostřednictvím vyhrazených adres URL. Dvě různé adresy URL aktivují ve webové aplikaci dvě různé části kódu.

https://tailwindtraders.com/products
https://tailwindtraders.com/orders

Tato lekce popisuje, co je adresa URL k vytvoření rozhraní API.

Cesta url

Adresa URL je adresa, kterou uživatel zadá do klienta, jako je prohlížeč, a vyhledá konkrétní server a konkrétní funkci. Když víte, jak adresa URL funguje, můžete podle ní vhodně uspořádat aplikaci.

Tady je typická adresa URL: http://localhost:8000/products/1?page=1&pageSize=20

Tato adresa URL odpovídá syntaxi, která vypadá takto:

scheme:[//authority]path[?query][#fragment]

Vysvětlíme části příkladu adresy URL: https://tailwindtraders.com/products/1?page=1&pageSize=20#sort=asc.

Část adresy URL Příklad Popis
Schéma https Použitý protokol, například http, https, ftp, ircnebo file.
Autorita tailwindtraders.com Skládá se z volitelných informací o uživateli a hostitele, což je obvykle název domény.
Cesta /products/1 Nula až mnoho segmentů oddělených lomítkem (/), zadáním prostředků, které vás zajímají.
Dotaz page=1&pageSize=20 Volitelná část definovaná za ? znakem, která se skládá z párů parametrů a hodnot pro další filtrování dat.
Fragment sort=asc Pomáhá být ještě konkrétnější, například řazení dat v určitém pořadí.

Každá trasa může mít akce, jako je vytvoření, čtení, aktualizace a odstranění (označované jako CRUD). Akce je označena metodou trasy a v kombinaci s dalšími informacemi odesílanými v hlavičkách a textu PROTOKOLU HTTP.

Obslužné rutiny HTTP

Express je webová architektura, která pomáhá vytvářet rozhraní HTTP API. Slouží k vytváření tras, které zpracovávají požadavky HTTP.

Tady je příklad kódu, který zpracovává požadavky HTTP pro adresu URL /products/114:

app.get('/products/:id', (req, res) => {
  // handle this request `req.params.id`
})

Formát obslužné rutiny je app.<method>(<route>, <callback>). Požadavek na trasu /products/114 pomocí metody GET spustí kód ve funkci, která má přístup k příchozímu požadavku (req) a vrátí odpověď (res).

Tento kód se dá přepsat, aby se snadněji četl:

const routeHandler = (incomingRequest, outgoingResponse) => {
  // handle this request
}

app.get('/products/:id', routeHandler)

V práci ve firmě Tailwind Traders možná budete muset pracovat v aplikacích Express s některým stylem kódu.

Příchozí data

Data se dají do rozhraní API odesílat několika způsoby:

Data Umístění Vysvětlení
Parametr trasy /products/:id, kde :id je parametr Parametry trasy jsou součástí adresy URL. Slouží k identifikaci konkrétního prostředku. Délka dat je omezená na povolenou délku adresy URL, takže je obvykle krátká, například ID nebo název. Trasa může mít více parametrů.
Parametr dotazu /products?page=1&pageSize=20, kde ?page=1&pageSize=20 je parametr Parametry dotazu jsou součástí adresy URL. Slouží k filtrování dat. Délka dat je omezená na povolenou délku adresy URL, takže je obvykle krátká, například ID nebo název. Trasa může mít více parametrů dotazu.
Text požadavku POST /products Text požadavku je součástí požadavku HTTP. Slouží k odesílání dat do rozhraní API. Délka dat se neomezuje na povolenou délku adresy URL, takže může být dlouhá. Hlavička HTTP označuje typ dat rozhraní API, jako je text, JSON nebo binární soubor.

Příchozí data obvykle odpovídají následujícím metodám na základě účelu akce:

Akce metoda Data
Vytvoření POST Text požadavku
Čteno GET Parametry směrování a dotazu
Aktualizovat PUT Text požadavku
Odstranění DELETE Parametry směrování a dotazu

Tip

První písmeno každé metody píše CRUD. Tyto termíny se používají v odvětví k popisu čtyř základních typů operací, které lze provádět s daty.

Příklad parametru směrování s req.params

Předpokládejme, že adresa URL požadavku je /products/20. ExpressRoute pro zpracování tohoto požadavku:

app.get('/products/:id', (req, res) => {
    const id = req.params.id

    // get product that matches id from database
})

Příklad řetězce dotazu s req.query

Předpokládejme, že adresa URL požadavku je /products?page=1&pageSize=20. ExpressRoute pro zpracování tohoto požadavku:

app.get('/products', (req, res) => {
    const page = req.query.page
    const pageSize = req.query.pageSize

    // get next page of products from database
})

Příklad textu požadavku s req.body

Předpokládejme, že adresa URL požadavku je /products a text požadavku je { "name": "Product 1" }. ExpressRoute pro zpracování tohoto požadavku:

app.post('/products', (req, res) => {
    const name = req.body.name

    // add new product to database
})