Azure Function: Redirect ad un nuovo URL

Sapevate che sfruttando le Azure Functions e’ possibile effettuare un redirect verso un nuovo url? In questo tips di inizio settimana vi mostrerò come effettuare questa operazione in poche -ed intendo pochissime- righe di codice.

FunctionRedirectToUrl

Senza perdermi troppo in parole vi voglio mostrare lo “scheletro” di una Azure Function per svolgere questa attività di redirect verso una nuova destinazione.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[FunctionName("FunctionRedirectToUrl")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
ILogger log)
{
string requestId = req.Query["RequestD"];

string urlDestination = await GetURLFromRequestID(requestId);

var result = new RedirectResult(
   urlDestination,
   true);

return result;
}

Come avrete notato il tutto è possibile sfruttando RedirectResult e passando l’indirizzo di destinazione. La parte “mancante” in questo codice è GetURLFromRequestID della quale mostrerò semplicemente la versione minimale.

1
2
3
4
5
private async Task<string> GetURLFromRequestID(string requestId)
{
    string result = await /* Get from DB*/;
    return result;
}

RedirectResult

La function appena mostrata utilizza RedirectResult per effettuare il Redirect verso il nuovo indirizzo. Come funziona?

Come primo punto vi invito a notare l’implementazione di IActionResult ed e’ proprio per questo motivo che possiamo utilizzarlo nella precedente Function.

1
public async Task<IActionResult> Run(

Ora non ci resta che entrare nello specifico per capirne le diverse possibilità in base ai parametri forniti in ingresso.

1
2
3
public RedirectResult(string url);
public RedirectResult(string url, bool permanent);
public RedirectResult(string url, bool permanent, bool preserveMethod);

Anche se i nomi dei parametri sono abbastanza parlanti, vediamo di osservarli nello specifico.

string url

The URL to redirect to.

bool permanent

Specifies whether the redirect should be permanent (301) or temporary (302).

bool preserveMethod

If set to true, make the temporary redirect (307) or permanent redirect (308) preserve the initial request method.