L'enrutament web (en anglès, web routing o URL routing) és el mecanisme mitjançant el qual una aplicació web associa les adreces URL entrants amb el codi que ha de processar-les i generar-ne la resposta. En altres paraules, l'enrutador web actua com un dispatcher: rep les peticions HTTP i decideix quin controlador o funció s'ha d'executar en funció del camí (ruta) i del mètode HTTP indicats a la petició.
L'enrutament web és un component fonamental de tots els frameworks web moderns i dels servidors web d'aplicació. Sense un sistema d'enrutament, no seria possible estructurar una aplicació web amb múltiples pàgines o punts finals d'una manera clara i mantenible.
Conceptes bàsics URL i ruta Una URL (Uniform Resource Locator) és l'adreça que identifica un recurs a la World Wide Web. Està formada per diversos components: esquema (https), domini (exemple.com), camí (path, per exemple /articles/42), paràmetres de consulta (query string) i fragment. En l'enrutament web, la part rellevant és principalment el camí i el mètode HTTP de la petició.
Una ruta (route) és la definició de l'associació entre un patró d'URL i la funció o controlador que ha de gestionar les peticions que corresponen a aquell patró. Quan arriba una petició, l'enrutador compara el camí de l'URL amb els patrons de les rutes definides i executa el gestor de la primera coincidència.
Mètodes HTTP El protocol HTTP defineix diversos mètodes o verbs que indiquen l'acció que es vol realitzar sobre un recurs. Els més habituals en enrutament web són:
GET: sol·licita la representació d'un recurs. És l'operació de lectura per excel·lència. POST: envia dades al servidor per crear un nou recurs o processar una acció. PUT i PATCH: actualitzen un recurs existent (totalment o parcialment). DELETE: elimina un recurs.
En el disseny d'API REST, el mètode HTTP és una part essencial de la ruta: la mateixa URL /articles/42 pot tenir comportaments completament diferents depenent de si la petició és GET (llegir l'article) o DELETE (eliminar-lo). Els frameworks web permeten definir rutes que especifiquen tant el patró d'URL com el mètode HTTP acceptat.
Tipus d'enrutament Rutes estàtiques Les rutes estàtiques o fixes associen una URL literal i immutable amb un gestor concret. Per exemple, la ruta /sobre-nosaltres sempre apunta a la pàgina «Sobre nosaltres» i no conté cap segment variable. Són simples d'entendre i de depurar, però resulten poc pràctiques quan cal gestionar un gran nombre de recursos del mateix tipus (per exemple, milers d'articles d'un blog).
Rutes dinàmiques Les rutes dinàmiques contenen segments variables (també anomenats paràmetres de ruta o wildcards) que capturen parts de l'URL com a valors i els passen al gestor. Per exemple, el patró /articles/<id> coincideix amb /articles/1, /articles/42 o /articles/999, i en cada cas el valor numèric és accessible dins la funció com la variable id.
La majoria de frameworks permeten restringir els segments variables a determinats tipus de dades (enters, cadenes de text, identificadors únics, etc.) per evitar que arribin valors invàlids al controlador.
Rutes amb expressions regulars Alguns frameworks i servidors web avançats permeten definir patrons de rutes mitjançant expressions regulars, cosa que ofereix una gran flexibilitat per capturar estructures d'URL complexes. Per exemple, Django permet definir rutes com ara re_path(), on el segment year ha de ser exactament quatre dígits numèrics.
Enrutament en frameworks web Els frameworks web integren l'enrutament com un dels seus components principals. Cada framework té la seva pròpia sintaxi i filosofia, però tots comparteixen el mateix principi: una taula de rutes que mapeja patrons d'URL a funcions o mètodes de controladors.
Django Django (Python) utilitza un fitxer urls.py on es defineixen les rutes amb la funció path() o re_path(). Les rutes apunten a funcions de vista (views) o a classes basades en vistes. Django permet organitzar les rutes de forma modular amb la funció include(), de manera que cada aplicació del projecte pot tenir el seu propi fitxer d'URL.
Ruby on Rails Ruby on Rails ofereix un sistema d'enrutament molt expressiu al fitxer config/routes.rb. Una de les seves característiques més destacades és la generació automàtica de les set rutes RESTful estàndard (index, show, new, create, edit, update, destroy) per a un recurs amb una sola declaració resources :articles.
Flask Flask (Python) utilitza decoradors per associar rutes a funcions. Per exemple, @app.route('/articles/<int:id>') defineix una ruta dinàmica on el segment id ha de ser un enter. Flask és un microframework que deixa al desenvolupador la màxima llibertat per organitzar les rutes.
Express Express.js és el framework web més popular per a Node.js. Utilitza mètodes com app.get(), app.post() i app.use() per definir rutes i middleware. Express permet muntar enrutadors secundaris (express.Router()) per modularitzar les rutes en fitxers separats.
FastAPI FastAPI (Python) combina l'enrutament amb la validació de dades i la generació automàtica de documentació OpenAPI. Les rutes es defineixen amb decoradors com @app.get() o @app.post(), i els paràmetres de ruta es declaren directament en la signatura de la funció amb anotacions de tipus.
URL netes Un concepte íntimament relacionat amb l'enrutament web és el de les URL netes (en anglès, clean URLs, pretty URLs o semantic URLs). Es tracta d'adreces llegibles i significatives per als humans, com ara /articles/2026/enrutament-web, en contrast amb URL generades automàticament que poden contenir paràmetres de consulta poc llegibles, com ara /index.php?id=142&cat=5.
Les URL netes milloren la usabilitat, faciliten la indexació per part dels motors de cerca (SEO) i permeten que les adreces continuïn sent vàlides fins i tot si la tecnologia subjacent del servidor canvia. L'enrutament web n'és la tècnica base: gràcies a l'enrutador, el servidor sap com processar una URL semàntica i mapejar-la al recurs correcte sense que calgui que l'adreça reflecteixi l'estructura real del sistema de fitxers del servidor.
Enrutament i arquitectura REST L'enrutament web és un pilar de l'estil arquitectònic REST (Representational State Transfer). En una API RESTful, cada recurs s'identifica amb una URL única, i les operacions sobre aquell recurs es distingeixen pel mètode HTTP. Un disseny d'enrutament RESTful ben estructurat fa que l'API sigui intuïtiva, coherent i fàcil de documentar i consumir per part de tercers.
Per exemple, una API RESTful per gestionar articles podria tenir les rutes següents: GET /articles – llistar tots els articles POST /articles – crear un article nou GET /articles/{id} – obtenir un article concret PUT /articles/{id} – actualitzar un article DELETE /articles/{id} – eliminar un article
Vegeu també Localitzador uniforme de recursos HTTP Middleware Model-Vista-Controlador
Referències
Enllaços externs Documentació d'URL de Django Rails Routing from the Outside In Enrutament a Flask Enrutament a Express.js Paràmetres de ruta a FastAPI
Categoria:Aplicacions web Categoria:World Wide Web Categoria:Protocols de xarxa.