Cvičení – sestavení koncových bodů rozhraní API
Vaše aplikace je nastavena tak, aby používala Orleans a definovali jste potřebná zrna. Přesto ale potřebujete přidat koncové body webové služby, se kterými může uživatel pracovat. V tomto kroku vytvoříte dva koncové body:
- Koncový bod pro vytvoření a vrácení zkrácené adresy URL uživateli.
- Koncový bod pro přesměrování uživatelů na úplnou adresu URL, když používají zkrácenou adresu URL.
Vytvoření koncového bodu, který zkracuje adresy URL
Nejprve vytvoříte koncový bod, který vytvoří a vrátí zkrácené adresy URL. Tato metoda přijímá úplnou adresu URL, kterou chce uživatel kontaktovat jako segment cesty, a pak vrátí zkrácenou verzi, kterou má použít v budoucnu.
Pod existující koncový bod Hello World
Get
přidejte následující kód:C#app.MapGet("/shorten", static async (IGrainFactory grains, HttpRequest request, string url) => { return Results.Ok(); });
Tato metoda je označena jako asynchronní, aby správně podporovala chování Orleans a vloží továrnu pro zrnitost, která byla dříve zaregistrována v kontejneru injektáž závislostí. V současné době metoda vrací prázdnou hodnotu 200 OK, takže ji opravíte.
Aktualizujte tělo vytvořené metody GET tak, aby odpovídalo následujícímu kódu:
C#app.MapGet("/shorten", static async (IGrainFactory grains, HttpRequest request, string url) => { var host = $"{request.Scheme}://{request.Host.Value}"; // Validate the URL query string. if (string.IsNullOrWhiteSpace(url) && Uri.IsWellFormedUriString(url, UriKind.Absolute) is false) { return Results.BadRequest($""" The URL query string is required and needs to be well formed. Consider, ${host}/shorten?url=https://www.microsoft.com. """); } // Create a unique, short ID var shortenedRouteSegment = Guid.NewGuid().GetHashCode().ToString("X"); // Create and persist a grain with the shortened ID and full URL var shortenerGrain = grains.GetGrain<IUrlShortenerGrain>(shortenedRouteSegment); await shortenerGrain.SetUrl(url); // Return the shortened URL for later use var resultBuilder = new UriBuilder(host) { Path = $"/go/{shortenedRouteSegment}" }; return Results.Ok(resultBuilder.Uri); });
Předchozí kód provádí několik úloh:
- Zajišťuje, že je řetězec dotazu URL správně vytvořený a není prázdný.
- Pomocí třídy se vytvoří
Guid
jedinečné krátké ID. - Načte se
IUrlShortenerGrain
pro zkrácený segment trasy. - Úplná adresa URL je uložena v agregačním intervalu.
- Zkrácená adresa URL se vrátí uživateli na
/go
trase.
Vytvoření koncového bodu, který zpracovává přesměrování
Dále je potřeba vytvořit koncový bod, který přesměruje zkrácené adresy URL na úplnou adresu.
shorten
Pod koncový bod přidejte další koncový bod pro zpracování přesměrování uživatele. Tento koncový bod očekává, že uživatel předá zkrácený segment trasy, který vytvořil metodushorten
jako parametr cesty url.C#app.MapGet("/go/{shortenedRouteSegment:required}", static async (IGrainFactory grains, string shortenedRouteSegment) => { // Retrieve the grain using the shortened ID and url to the original URL var shortenerGrain = grains.GetGrain<IUrlShortenerGrain>(shortenedRouteSegment); var url = await shortenerGrain.GetUrl(); // Handles missing schemes, defaults to "http://". var redirectBuilder = new UriBuilder(url); return Results.Redirect(redirectBuilder.Uri.ToString()); });
Tento kód provádí následující úlohy pro zpracování požadavku uživatele.
- Zkrácený segment trasy se používá k načtení odpovídající
IUrlShortenerGrain
instance. - Úplná adresa URL se načte z agregačního intervalu.
- Úplná adresa URL se používá k přesměrování uživatele na správné místo.
- Zkrácený segment trasy se používá k načtení odpovídající
Otestování aplikace
Základní funkce aplikace by teď měly fungovat podle očekávání, takže teď můžete otestovat svůj kód.
V terminálu editoru Visual Studio Code spusťte
dotnet run
znovu příkaz a spusťte aplikaci..NET CLIdotnet run
Aplikace by se měla spustit v prohlížeči a zobrazit známý
Hello world!
text.Na adresním řádku prohlížeče otestujte
shorten
koncový bod zadáním cesty URL, například{localhost}/shorten?url=microsoft.com
. Stránka by se měla znovu načíst a zadat zkrácenou adresu URL. Zkopírujte zkrácenou adresu URL do schránky.Vložte zkrácenou adresu URL do adresního řádku a stiskněte enter. Stránka by se měla znovu načíst a přesměrovat na https://microsoft.com.
Aplikace postupuje pěkně, ale stále existuje prostor pro zlepšení. V dalším kroku prozkoumáte, jak může přidání trvalosti stavu zlepšit odolnost aplikace.