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
regexPatternscon flagactivevalorizzato a true. -
Al primo match, viene restituito il redirect (301) alla URL ottenuta combinando la proprietà
redirectToed 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.jscon la logica di redirect.tests/: Contiene i test per validare il comportamento del rewriter.
-
Aggiornamento del Codice
Modifica
src/rewriter.tsper 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 testAssicurati 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.