🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Parametri di Routing in Express.js: Guida Completa

Codegrind Team•Aug 28 2024

I parametri di routing in Express.js sono una funzionalità potente che consente di creare percorsi dinamici e flessibili all’interno delle applicazioni web. Essi permettono di definire URL che contengono variabili, rendendo possibile l’accesso a risorse specifiche o la gestione di operazioni basate sui dati forniti nell’URL. In questa guida, esploreremo come utilizzare i parametri di routing, le differenze tra i vari tipi di parametri (route parameters, query string e body parameters), e come gestirli efficacemente nelle tue applicazioni.

Cos’è il Routing in Express.js?

Il routing in Express.js è il processo di definizione dei percorsi (o endpoint) che un’applicazione può gestire. Un percorso specifica un URL e un metodo HTTP (GET, POST, PUT, DELETE, ecc.), e viene associato a una funzione che viene eseguita quando quel percorso viene richiesto.

Esempio di Routing di Base

const express = require("express");
const app = express();

app.get("/users", (req, res) => {
  res.send("Lista di utenti");
});

app.listen(3000, () => {
  console.log("Server in ascolto sulla porta 3000");
});

Parametri di Route

I parametri di route sono parti variabili di un percorso che possono essere utilizzate per catturare i valori dinamici inseriti nell’URL. Vengono definiti utilizzando i due punti (:) prima del nome del parametro all’interno della definizione del percorso.

Esempio di Parametri di Route

app.get("/users/:id", (req, res) => {
  const userId = req.params.id;
  res.send(`Utente con ID: ${userId}`);
});

In questo esempio, se un client richiede l’URL /users/42, il valore 42 verrà catturato come id e sarà accessibile tramite req.params.id.

Utilizzo di Più Parametri di Route

Puoi definire più parametri di route in un singolo percorso:

app.get("/users/:userId/posts/:postId", (req, res) => {
  const { userId, postId } = req.params;
  res.send(`Post ${postId} dell'utente ${userId}`);
});

In questo caso, l’URL /users/42/posts/101 catturerà 42 come userId e 101 come postId.

Parametri di Route Opzionali

Express permette di definire parametri di route opzionali aggiungendo un punto interrogativo (?) dopo il nome del parametro:

app.get("/users/:id?", (req, res) => {
  if (req.params.id) {
    res.send(`Utente con ID: ${req.params.id}`);
  } else {
    res.send("Nessun ID utente fornito");
  }
});

Query String Parameters

I query string parameters sono parametri che vengono aggiunti all’URL dopo un punto interrogativo (?). Sono utilizzati per passare dati che non fanno parte del percorso ma che devono essere considerati dal server.

Esempio di Query String Parameters

app.get("/search", (req, res) => {
  const { query, page } = req.query;
  res.send(`Ricerca per "${query}" nella pagina ${page}`);
});

Se un client richiede l’URL /search?query=express&page=2, req.query.query sarà express e req.query.page sarà 2.

Body Parameters

I body parameters sono dati che vengono inviati nel corpo della richiesta, generalmente utilizzati nei metodi POST, PUT, e PATCH. Per accedere ai body parameters, è necessario utilizzare un middleware come express.json() o express.urlencoded().

Esempio di Body Parameters con JSON

app.use(express.json());

app.post("/users", (req, res) => {
  const { name, email } = req.body;
  res.send(`Creazione di un nuovo utente con nome: ${name} e email: ${email}`);
});

In questo esempio, i dati inviati come JSON nel corpo della richiesta POST sono accessibili tramite req.body.name e req.body.email.

Differenze tra Route, Query String e Body Parameters

  • Route Parameters: Parte dell’URL che definisce una risorsa specifica o una variabile di percorso. Utilizzati per identificare risorse specifiche, ad esempio /users/:id.

  • Query String Parameters: Parametri aggiunti all’URL dopo un punto interrogativo, utilizzati per passare dati addizionali come opzioni di filtro, ad esempio /search?query=express&page=2.

  • Body Parameters: Dati inviati nel corpo della richiesta, utilizzati principalmente con metodi come POST per trasmettere informazioni strutturate come JSON.

Validazione e Sicurezza dei Parametri

È importante validare e sanificare tutti i parametri per prevenire vulnerabilità come l’injection di SQL o altri tipi di attacchi.

Esempio di Validazione con express-validator

npm install express-validator --save
const { check, validationResult } = require("express-validator");

app.post(
  "/users",
  [check("email").isEmail(), check("name").not().isEmpty().trim().escape()],
  (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }
    res.send("Dati utente validi");
  }
);

In questo esempio, express-validator viene utilizzato per verificare che email sia un indirizzo email valido e che name non sia vuoto.

Best Practices per l’Uso dei Parametri di Routing

  1. Usa i Parametri di Route per Identificare Risorse: Utilizza i parametri di route per identificare risorse specifiche come utenti, prodotti, o post.

  2. Utilizza i Query Parameters per Filtri e Opzioni: Riserva i query parameters per opzioni che modificano il comportamento di una richiesta, come paginazione, filtri o ordinamento.

  3. Valida Tutti i Parametri: Implementa sempre la validazione e la sanificazione dei parametri per garantire la sicurezza dell’applicazione.

  4. Mantieni il Routing Chiaro e Semplice: Progetta percorsi logici e comprensibili, seguendo una struttura gerarchica che rappresenti chiaramente le risorse e le operazioni.

  5. Documenta le API: Fornisci una documentazione chiara per le tue API, specificando come utilizzare i parametri di route, query e body per evitare fraintendimenti e garantire un uso corretto da parte degli sviluppatori.

Conclusione

I parametri di routing in Express.js offrono un modo flessibile per gestire percorsi dinamici e raccogliere dati dalle richieste degli utenti. Comprendere come utilizzare e combinare route parameters, query string parameters e body parameters è essenziale per costruire API e applicazioni web potenti ed efficienti. Seguendo le best practices delineate in questa guida, puoi garantire che le tue applicazioni siano sicure, scalabili e facili da manutenere.