Questo progetto permette di reindirizzare dinamicamente determinate URL verso nuovi endpoint, sia versionati che non versionati, utilizzando espressioni regolari.
Il codice è scritto per essere eseguito come CloudFront Function (AWS).
-
La URI in ingresso viene testata sulle regex elencate nell'array
regexPatterns
con flagactive
valorizzato a true. -
Al primo match, viene restituito il redirect (301) alla URL ottenuta combinando la proprietà
redirectTo
ed eventuali informazioni presenti nell'URI originale ed estratte dalla regex stessa. -
Se non è stata trovata alcuna regola, la richiesta viene restituita senza modifiche.
src/
: Contiene il filerewriter.js
con la logica di redirect.tests/
: Contiene i test per validare il comportamento del rewriter.
-
Aggiornamento del Codice:
Modificasrc/rewriter.js
per aggiungere la nuova regola di rewrite. La nuova regola va inserita all'interno dell'arrayregexPatterns
.Attenzione: CloudFront Function supporta JavaScript ECMAScript 5.1!
-
Creazione dei Test:
Aggiungi o aggiorna i test nella cartellatests/
per verificare la nuova regola. -
Esecuzione dei Test:
Esegui:npm test
Assicurati che tutti i test, inclusi quelli per la nuova regola, vengano superati.
Attenzione: L'esecuzione dei test include i check di compatibilità con Javascript ECMAScript 5.1 richiesto dalle CloudFront Function!
Per facilitare la scrittura delle regex di riconoscimento sono disponibili gli helper: simpleHelper
e versionedHelper
.
Riconosce semplici path identificati da una stringa iniziale statica.
Il builder accetta un parametro:
- base: stringa iniziale dell'URI
La regex crea un gruppo:
- 1: (opzionale) contiene il path
Ad esempio invocando l'helper simpleHelper("manuale-servizi/manuale-servizi-v1.0")
otteniamo una regex che restituirà i seguenti valori:
URI | gruppo 1 |
---|---|
/manuale-servizi/manuale-servizi-v1.0/changelog | /changelog |
Riconosce path in cui sono presenti informazioni di versione, come ad es. in /saci/saci-1.2.3
.
Il builder accetta due parametri:
- base: stringa iniziale dell'URI
- versionPrefix: (opzionale) prefisso di versione da scartare
La regex crea infatti i seguenti gruppi:
- 1: (opzionale) contiene la versione (ad eccezione di quanto specificato nel parametro versionPrefix)
- 2: (opzionale) contiene il path
La combinazione di queste informazioni è utilizzata nella costruzione dell'URL di redirect.
Ad esempio invocando l'helper versionedHelper("saci", "saci-")
otteniamo una regex che restituirà i seguenti valori:
URI | gruppo 1 | gruppo 2 |
---|---|---|
/saci | ||
/saci/ | / | |
/saci/mypath | /mypath | |
/saci/saci-1.2.3 | 1.2.3 | |
/saci/saci-1.2.3/mypath | 1.2.3 | /mypath |
Una volta verificata la nuova regola, copia il file build/rewriter.js aggiornato nella CloudFront Function, in modo che l’ambiente di produzione utilizzi la versione testata.