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
Modifica
src/rewriter.ts
per aggiungere la nuova regola di rewrite. La nuova regola va inserita all'interno dell'arrayregexPatterns
. -
Creazione dei Test
Aggiungi o aggiorna i test nella cartella
tests/
per verificare la nuova regola. -
Esecuzione dei Test
Esegui:
npm test
Assicurati che tutti i test, inclusi quelli per la nuova regola, vengano superati.
-
Creazione del file di distribuzione
Esegui:
npm run dist
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 due parametri:
- base: stringa iniziale dell'URI
- usePath : indica alla regex se riconoscere come gruppo la stringa che segue base
La regex crea un gruppo:
- 1: (opzionale) contiene il path se usePath è true
Ad esempio invocando l'helper simpleHelper("/path_molto_esteso/sotto-path/path_finale")
otteniamo una regex che restituirà i seguenti valori:
URI | gruppo 1 |
---|---|
/path_molto_esteso/sotto_path/path_finale | /path_finale |
Mentre se invochiamo lo stesso helper simpleHelper("/path_molto_esteso/sotto-path/path_finale", false)
otteniamo
URI | gruppo 1 |
---|---|
/path_molto_esteso/sotto_path/path_finale | null |
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 eseguito il comando npm run dist
, copia il file dist/rewriter.js all'interno della CloudFront Function, in modo che l’ambiente di produzione utilizzi la versione testata.