Förstå URL:er och vägar

Slutförd

Ett program har en mängd olika data som det hanterar, till exempel produkter eller beställningar. Som utvecklare för Tailwind Traders organiserar du dina API:er i avsnitt för typen av data. Med hjälp av avsnitt kan du underhålla och utöka appen.

Ett enkelt sätt att utöka en webbapp är att se till att data är tillgängliga via dedikerade URL:er. Två olika URL:er utlöser två olika delar av koden i webbappen.

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

I den här lektionen beskrivs vad en URL är för att skapa ett API.

URL-sökväg

En URL är en adress som en användare anger i en klient, till exempel en webbläsare, för att hitta en specifik server och en specifik funktion. Att känna till hur en URL fungerar hjälper dig att organisera din app runt den.

Här är en typisk URL: http://localhost:8000/products/1?page=1&pageSize=20

URL:en följer en syntax som ser ut så här:

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

Nu ska vi förklara delarna för exempel-URL:en: https://tailwindtraders.com/products/1?page=1&pageSize=20#sort=asc.

Adresskomponent Exempel beskrivning
Schema https Det protokoll som används, till exempel http, https, ftp, irceller file.
Utfärdare tailwindtraders.com Består av valfri användarinformation och en värd, som vanligtvis är ett domännamn.
Sökväg /products/1 Noll till många segment avgränsade med ett snedstreck (/), vilket anger vilka resurser du är intresserad av.
Fråga page=1&pageSize=20 Valfri del definierad efter ? tecknet, bestående av parameter/värdepar för att filtrera data ytterligare.
Fragment sort=asc Hjälper dig att vara ännu mer specifik, till exempel att sortera data i en viss ordning.

Varje väg kan ha åtgärder som att skapa, läsa, uppdatera och ta bort (kallas CRUD). Åtgärden anges med routningsmetoden och kombineras med ytterligare information som skickas i HTTP-huvudena och brödtexten.

HTTP-hanterare

Express är ett webbramverk som hjälper dig att skapa HTTP-API:er. Använd den för att skapa vägar som hanterar HTTP-begäranden.

Här är ett exempel på kod som hanterar HTTP-begäranden för URL:en /products/114:

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

Hanterarens format är app.<method>(<route>, <callback>). Begäran för vägen /products/114 med GET-metoden kör koden i funktionen som har åtkomst till den inkommande begäran (req) och returnerar svaret (res).

Den här koden kan skrivas om så att den blir enklare att läsa:

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

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

I ditt arbete på Tailwind Traders kan du behöva arbeta i Express-appar med någon av kodformaten.

Inkommande data

Data kan skickas till API:et på flera sätt:

Data Plats Förklaring
Routningsparameter /products/:id, där :id är parametern Routningsparametrar är en del av URL:en. De används för att identifiera en specifik resurs. Datalängden är begränsad till den tillåtna längden på URL:en, så den är vanligtvis kort, till exempel ett ID eller ett namn. En väg kan ha flera parametrar.
Frågeparameter /products?page=1&pageSize=20, där ?page=1&pageSize=20 är parametern Frågeparametrar är en del av URL:en. De används för att filtrera data. Datalängden är begränsad till den tillåtna längden på URL:en, så den är vanligtvis kort, till exempel ett ID eller ett namn. En väg kan ha flera frågeparametrar.
Begärandetext POST /products Begärandetexten är en del av HTTP-begäran. Den används för att skicka data till API:et. Datalängden är inte begränsad till den tillåtna längden på URL:en så den kan vara lång. HTTP-huvudet anger för API:et typen av data, till exempel text, JSON eller binär.

Inkommande data matchar vanligtvis följande metoder baserat på syftet med åtgärden:

Åtgärd Metod Data
Skapa POST Begärandetext
Läs GET Routnings- och frågeparametrar
Update PUT Begärandetext
Delete DELETE Routnings- och frågeparametrar

Dricks

Den första bokstaven i varje metod stavar CRUD. Dessa termer används i branschen för att beskriva de fyra grundläggande typer av åtgärder som kan utföras på data.

Exempel på routningsparameter med req.params

Anta att begärande-URL:en är /products/20. Express-vägen för att hantera den här begäran är:

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

    // get product that matches id from database
})

Exempel på frågesträng med req.query

Anta att begärande-URL:en är /products?page=1&pageSize=20. Express-vägen för att hantera den här begäran är:

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

    // get next page of products from database
})

Exempel på begärandetext med req.body

Anta att begärande-URL:en är /products och att begärandetexten är { "name": "Product 1" }. Express-vägen för att hantera den här begäran är:

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

    // add new product to database
})