Informazioni sugli URL e sulle route

Completato

Un'applicazione ha un'ampia gamma di dati gestiti, come prodotti o ordini. Gli sviluppatori di Tailwind Traders organizzano le API in sezioni per tipo di dati. L'uso delle sezioni consentirà di gestire ed estendere l'app.

Un modo semplice per estendere un'app Web è quello di far sì che i dati siano accessibili tramite URL dedicati. Due URL diversi attivano due frammenti di codice diversi nell'app Web.

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

Questa unità descrive l'URL ai fini della creazione di un'API.

Percorso URL

Un URL è un indirizzo che un utente digita in un client, ad esempio un browser, per trovare un server e una funzionalità specifici. La comprensione del funzionamento di un URL consente di organizzare al meglio l'app.

Questo è un URL tipico: http://localhost:8000/products/1?page=1&pageSize=20

L'URL è conforme a una sintassi simile alla seguente:

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

Verranno ora illustrate le parti per l'URL di esempio: https://tailwindtraders.com/products/1?page=1&pageSize=20#sort=asc.

Componente URL Esempio Descrizione
Schema https Protocollo usato, ad esempio http, https, ftp, irc o file.
Autorità tailwindtraders.com È costituito da informazioni utente facoltative e da un host, che in genere è un nome di dominio.
Percorso /products/1 Da zero a molti segmenti separati da una barra (/), specificando le risorse a cui si è interessati.
Query page=1&pageSize=20 Parte facoltativa definita dopo il carattere ?, costituita da coppie parametro/valore per filtrare ulteriormente i dati.
Frammento sort=asc Consente di essere ancora più specifici, come l'ordinamento dei dati in un ordine particolare.

Ogni route può avere azioni come creare, leggere, aggiornare ed eliminare (note come CRUD). L'azione è indicata dal metodo di route e combinata con informazioni aggiuntive inviate nelle intestazioni HTTP e nel corpo.

Gestori HTTP

Express è un framework Web che consente di creare API HTTP. Usarlo per creare route che gestiscono le richieste HTTP.

Ecco un esempio di codice che gestisce le richieste HTTP per l'URL /products/114:

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

Il formato del gestore è app.<method>(<route>, <callback>). La richiesta per la route /products/114 con il metodo GET esegue il codice nella funzione che ha accesso alla richiesta in ingresso (req) e restituisce la risposta (res).

Questo codice può essere riscritto per semplificare la lettura:

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

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

Nel lavoro di Tailwind Traders, potrebbe essere necessario lavorare nelle app Express con uno dei due stili di codice.

Dati di ingresso

I dati possono essere inviati all'API in diversi modi:

Dati Ufficio Spiegazione
Parametro di route /products/:id, dove :id è il parametro I parametri di route fanno parte dell'URL. Vengono usati per identificare una risorsa specifica. La lunghezza dei dati è limitata alla lunghezza consentita dell'URL, quindi in genere è breve come un ID o un nome. Una route può avere più parametri.
Query parameter (Parametro di query) /products?page=1&pageSize=20, dove ?page=1&pageSize=20 è il parametro I parametri della query fanno parte dell'URL. Vengono usati per filtrare i dati. La lunghezza dei dati è limitata alla lunghezza consentita dell'URL, quindi in genere è breve come un ID o un nome. Una route può avere più parametri di query.
Corpo della richiesta POST /products Il corpo della richiesta fa parte della richiesta HTTP. Viene usato per inviare dati all'API. La lunghezza dei dati non è limitata alla lunghezza consentita dell'URL, che quindi può essere lunga. L'intestazione HTTP indica all'API il tipo di dati, come testo, JSON o di tipo binario.

I dati in ingresso corrispondono in genere ai metodi seguenti in base allo scopo dell'azione:

Azione metodo Dati
Creazione POST Corpo della richiesta
Lettura GET Parametri di route e query
Aggiornamento PUT Corpo della richiesta
Elimina DELETE Parametri di route e query

Suggerimento

La prima lettera di ogni metodo compone CRUD. Tale termine viene usato nel settore per descrivere i quattro tipi di operazioni di base che possono essere eseguite sui dati.

Esempio di parametro di route con req.params

Si supponga che l'URL della richiesta sia /products/20. La route Express per gestire questa richiesta è:

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

    // get product that matches id from database
})

Esempio di stringa di query con req.query

Si supponga che l'URL della richiesta sia /products?page=1&pageSize=20. La route Express per gestire questa richiesta è:

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

    // get next page of products from database
})

Esempio di corpo della richiesta con req.body

Si supponga che l'URL della richiesta sia /products e che il corpo della richiesta sia { "name": "Product 1" }. La route Express per gestire questa richiesta è:

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

    // add new product to database
})