Vysvětlení adres URL a tras
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 , irc nebo 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
})