Programování

Jak pracovat s ActionResults ve webovém rozhraní API

ASP.Net Web API je odlehčený rámec používaný pro vytváření bezstavových a RESTful služeb HTTP. Výsledky akce ve webovém rozhraní API můžete využít k vrácení dat z metod řadiče webového rozhraní API.

Začínáme

Nejprve vytvořme projekt webového API. Chcete-li to provést, vytvořte v aplikaci Visual Studio 2015 prázdný projekt ASP.Net a při výběru šablony projektu zaškrtněte políčko Web API. Dále uložte projekt s názvem.

Všimli byste si, že je vytvořen prázdný projekt ASP.Net. Klikněte pravým tlačítkem na složku řešení Controllers a klikněte na Add -> Controller a vytvořte nový řadič webového API. Po zobrazení výzvy v okně, které se objeví dále, vyberte „Web API 2 Controller - Empty“. Uložte ovladač se jménem. Předpokládejme, že název řadiče pro tento příklad je „DefaultController“.

Vytvořme třídu entit s názvem Kontakt.

veřejná třída Kontakt

    {

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

    }

Dále přidejte následující metodu do DefaultController.

public CustomActionResult Get ()

        {

Kontaktní kontakt = nový Kontakt ();

contact.Id = 1;

contact.FirstName = "Joydip";

contact.LastName = "Kanjilal";

vrátit nový CustomActionResult (HttpStatusCode.OK, kontakt);

        }

Všimněte si použití třídy CustomActionResult při vracení dat z metody řadiče. Nyní pojďme vytvořit třídu CustomActionResult, abychom zajistili kompilaci kódu - tuto třídu implementujeme později.

veřejná třída CustomActionResult: IHttpActionResult

    {

public Task ExecuteAsync (CancellationToken CancelToken)

        {

hodit nový NotImplementedException ();

        }

    }

Práce s ActionResults

Řadič webového rozhraní API může vrátit kterýkoli z následujících typů hodnot:

  • HttpResponseMessage: v tomto případě by vaše webové API převádělo návratovou hodnotu na objekt zprávy odpovědi Http a vrátilo by ji.
  • IHttpActionResult: v tomto případě běhové prostředí Web API převede návratovou hodnotu na objekt zprávy odpovědi Http (instance HttpResponseMessage je vytvořena asynchronně) interně a vrátí ji. Použití rozhraní IHttpActionResult (zavedené ve webovém rozhraní API 2) zjednodušuje testování jednotek u vašich řadičů webového rozhraní API a také zabalí vytvoření objektu HttpResponseMessage.
  • void: v tomto případě by vaše webové API vrátilo prázdnou odpověď Http se stavovým kódem 204.
  • Jiné typy: v tomto případě by vaše webové rozhraní API využilo vhodný formátovač médií k serializaci a vrácení dat z metody řadiče webového rozhraní API se stavovým kódem odpovědi 200.

Následující fragment kódu ukazuje, jak můžete použít návrat HttpResponseMessage z vaší metody webového rozhraní API.

[Trasa („kontakt“)]

veřejné HttpResponseMessage Get ()

{

HttpResponseMessage message = Request.CreateResponse (HttpStatusCode.OK, kontakt);

zpětná zpráva;

}

Pojďme nyní implementovat vlastní výsledek akce, který použijeme k vrácení dat z webového rozhraní API, které jsme vytvořili.

Vytvoření vlastního ActionResult

Chcete-li vytvořit vlastní třídu výsledků akce, vše, co musíte udělat, je vytvořit třídu, která implementuje rozhraní IActionResult a přepíše metodu ExecuteAsync.

Následující fragment kódu ukazuje, jak můžete pomocí Generics vytvořit vlastní třídu výsledků akce.

veřejná třída CustomActionResult: IHttpActionResult

    {

soukromý System.Net.HttpStatusCode statusCode;

T data;

public CustomActionResult (System.Net.HttpStatusCode statusCode, T data)

        {

this.statusCode = statusCode;

this.data = data;

        }

    }

Následující fragment kódu ukazuje, jak můžete vytvořit objekt odpovědi, naplnit ho potřebnými daty a vrátit jej.

veřejný HttpResponseMessage CreateResponse (System.Net.HttpStatusCode statusCode, T data)

        {

HttpRequestMessage požadavek = nový HttpRequestMessage (); request.Properties.Add (System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, nová HttpConfiguration ());

HttpResponseMessage response = request.CreateResponse (statusCode, data);

návratová odpověď;

        }

Metoda ExecuteAsync volá metodu CreateResponse a předává jí stavový kód a data jako parametr.

        public Task ExecuteAsync (CancellationToken CancelToken)

        {

vrátit Task.FromResult (CreateResponse (this.statusCode, this.data));

        }

Využívání webového API

Chcete-li využít právě vytvořené webové API, můžete vytvořit konzolovou aplikaci a poté importovat balíček „WebApiContrib.Formatting.ProtoBuf“ do svého projektu přes NuGet.

Za předpokladu, že jste vytvořili klienta pro využití webového rozhraní API, které jsme implementovali dříve, je zde seznam kódů, který ukazuje, jak můžete využívat webové rozhraní API.

static void Main (řetězec [] args)

        {

var client = new HttpClient {BaseAddress = new Uri ("// localhost: 37019 /")};

HttpResponseMessage response = client.GetAsync ("api / Default"). Výsledek;

if (response.IsSuccessStatusCode)

            {

Kontaktní kontakt = response.Content.ReadAsAsync (). Výsledek;

Console.WriteLine ("Id =" + contact.Id + "Jméno:" + contact.FirstName + "Příjmení:" + contact.LastName);

            }

jiný

            {

Console.WriteLine ("{0} ({1})", (int) response.StatusCode, response.ReasonPhrase);

            }

Console.ReadKey ();

        }

$config[zx-auto] not found$config[zx-overlay] not found