Informazioni sugli URL e sulle route
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
})