Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Annexe 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Référence des classes
Créer une application Web avec Express
Routage
Norme
Standard
Loi

Routage

Le routage fait référence à la manière dont les points de terminaison (URI) d'une application répondent aux requêtes des clients. Vous définissez le routage à l'aide des méthodes de l'objet d'application Express correspondant aux méthodes HTTP; par exemple, app.get() pour gérer les requêtes GET et app.post pour gérer les requêtes POST. Vous pouvez également utiliser app.all() pour gérer toutes les méthodes HTTP et app.use() pour spécifier l'intergiciel comme fonction de rappel.

Ces méthodes de routage spécifient une fonction de rappel (parfois appelée «fonctions de gestionnaire») appelée lorsque l'application reçoit une requête vers la route (point final) et la méthode HTTP spécifiées. En d'autres termes, l'application écoute les requêtes correspondant aux routes et méthodes spécifiées, et lorsqu'elle détecte une correspondance, elle appelle la fonction de rappel spécifiée.

En fait, les méthodes de routage peuvent avoir plus d'une fonction de rappel comme paramètres. Avec plusieurs fonctions de rappel, il est important de fournir next comme paramètre à la fonction de rappel, puis d'appeler next() dans le corps de la fonction pour transférer le contrôle au prochain rappel.

Le code suivant est un exemple d'itinéraire très simplifié :

  1. var express = require("express")
  2. var app = express()
  3.  
  4. // répondre par "bonjour" lorsqu'une requête GET est envoyée à la page d'accueil
  5. app.get("/", function (req, res) {
  6.   res.send("Bonjour")
  7. })

Méthodes d'itinéraire

Une méthode de route est dérivée de l'une des méthodes HTTP et est attachée à une instance de la classe express. Le code suivant est un exemple d'itinéraires définis pour les méthodes GET et POST vers la racine de l'application.

  1. // Route de la méthode GET
  2. app.get("/", function (req, res) {
  3.   res.send("Requete GET en accueil")
  4. })
  5.  
  6. // Route de la méthode POST
  7. app.post("/", function (req, res) {
  8.   res.send("Requete POST en accueil")
  9. })

L'Express prend en charge les méthodes correspondant à toutes les méthodes de requête HTTP : GET, POST,... Il existe une méthode de routage spéciale, app.all(), utilisée pour charger les fonctions intergiciel sur un chemin pour toutes les méthodes de requête HTTP. Par exemple, le gestionnaire suivant est exécuté pour les requêtes vers la route «/secret», que ce soit en utilisant GET, POST, PUT, DELETE ou toute autre méthode de requête HTTP prise en charge dans le module http.

  1. app.all("/secret", function (req, res, next) {
  2.   console.log("Accéder à la section secrète ...")
  3.   next() // passer le contrôle au prochain gestionnaire
  4. })

Chemins d'une route

Les chemins de routage, en combinaison avec une méthode de requête, définissent les points de terminaison auxquels les requêtes peuvent être effectuées. Les chemins de routage peuvent être des chaînes de caractères, des modèles de chaînes de caractères ou des expressions régulières.

Les caractères «?», «+», «*», «(» et «)» sont des sous-ensembles de leurs équivalents d'expression régulière. Le trait d'union (-) et le point (.) sont interprétés littéralement par des chemins basés sur des chaînes de caractères.

Si vous devez utiliser le caractère dollar ($) dans une chaîne de caractères de chemin, placez-le en échappé entre ([ et ]). Par exemple, la chaîne de caractères de chemin pour les requêtes à «/donnees/$livre» serait «/donnees/([\$])livre».

Voici quelques exemples de chemins d'itinéraire basés sur des chaînes de caractères. Ce chemin de route fera correspondre les requêtes à la route root, «/» :

  1. app.get("/", function (req, res) {
  2.   res.send("root")
  3. })

Ce chemin d'accès correspondra aux demandes de /apropos :

  1. app.get("/apropos", function (req, res) {
  2.   res.send("apropos")
  3. })

Ce chemin de route correspondra aux demandes de /aleatoire.texte 

  1. app.get("/aleatoire.texte", function (req, res) {
  2.   res.send("aleatoire.texte")
  3. })

Voici quelques exemples de chemins d'itinéraire basés sur des modèles de chaîne de caractères. Ce chemin de route correspondra à acd et abcd :

  1. app.get("/ab?cd", function (req, res) {
  2.   res.send("ab?cd")
  3. })

Ce chemin de route correspondra à abcd, abbcd, abbbcd,... 

  1. app.get("/ab+cd", function (req, res) {
  2.   res.send("ab+cd")
  3. })

Ce chemin d'itinéraire correspondra à abcd, abxcd, abALEATOIREcd, ab123cd,... 

  1. app.get("/ab*cd", function (req, res) {
  2.   res.send("ab*cd")
  3. })

Ce chemin de route correspondra à /abe et /abcde 

  1. app.get("/ab(cd)?e", function (req, res) {
  2.   res.send("ab(cd)?e")
  3. })

Voici des exemples de chemins d'itinéraire basés sur des expressions régulières. Ce chemin de route correspondra à tout ce contenant un «a» :

  1. app.get(/a/, function (req, res) {
  2.   res.send("/a/")
  3. })

Ce chemin d'accès correspondra au butterfly et à la dragonfly, mais pas au butterflyman, au dragonflyman,... :

  1. app.get(/.*fly$/, function (req, res) {
  2.   res.send("/.*fly$/")
  3. })

Paramètres de l'itinéraire

Les paramètres d'itinéraire sont des segments d'URL nommés étant utilisés pour capturer les valeurs spécifiées à leur position dans l'URL. Les valeurs capturées sont renseignées dans l'objet req.params, avec le nom du paramètre d'itinéraire spécifié dans le chemin comme clefs respectives. On aura des structures ressemblant à ceci :

Chemin de route : /utilisateurs/:utilisateurId/livres/:livreId
URL de requête : http://localhost:3000/utilisateur/34/livres/8989
req.params: { "utilisateurId": "34", "livreId": "8989" }

Pour définir des itinéraires avec des paramètres d'itinéraire, spécifiez simplement les paramètres d'itinéraire dans le chemin de l'itinéraire comme indiqué ci-dessous :

  1. app.get("/utilisateurs/:utilisateurId/livres/:livreId", function (req, res) {
  2.   res.send(req.params)
  3. })

Le nom des paramètres d'itinéraire doit être composé de «caractères de mot» ([A-Za-z0-9_]).



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Jeudi, le 4 mars 2021