Cvičení – sestavení koncových bodů rozhraní API

Dokončeno 100 XP

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.

  1. 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.

  2. 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.

  1. 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 metodu shorten 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.

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.

  1. V terminálu editoru Visual Studio Code spusťte dotnet run znovu příkaz a spusťte aplikaci.

    .NET CLI
    dotnet run
    

    Aplikace by se měla spustit v prohlížeči a zobrazit známý Hello world! text.

  2. 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.

  3. 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.


Další jednotka: Prozkoumání správy stavu

Předchozí Další