Programiranje

Raziskovanje usmerjanja v spletnem API-ju

ASP.Net Web API je lahek okvir, ki se uporablja za gradnjo storitev HTTP brez državljanstva. S pomočjo spletnega API-ja lahko načrtujete in izvajate storitve RESTful, ki se izvajajo na HTTP. REST je arhitekturni slog - niz omejitev, ki se uporabljajo za izvajanje storitev brez državljanstva. Spletni API je že postal izbrana tehnologija za izdelavo lahkih HTTP storitev. V tem prispevku bom predstavil razpravo o tem, kako usmerjanje deluje v spletnem API-ju.

Ko ustvarite projekt spletnega API-ja v Visual Studio, boste opazili, da se ustvari tudi projekt MVC. Podobno kot ASP.Net MVC se konfiguracija usmerjanja v projektu Web API prikliče iz datoteke Global.asax. Projekt spletnega API-ja shrani informacije o konfiguraciji v razredih RouteConfig in WebApiConfig - oba sta prisotna v mapi Application_Start. Podobno kot pri projektu MVC bi tudi v svoji rešitvi opazili datoteko RouteConfig.cs, ustvarjeno v mapi App_Start.

Krmilnik v spletnem API-ju je odgovoren za obdelavo zahtev HTTP. Javne metode krmilnika so znane kot akcijske metode. Takoj ko je zahteva prejeta, izvajalno okolje Web API zahtevo usmeri v ustrezno dejanje za obdelavo zahteve. Zdaj, da določi, katero dejanje je treba izvesti, izvajalno okolje Web API izkoristi usmerjevalno tabelo. V nasprotju s tipično aplikacijo ASP.Net MVC izvajalno okolje Web API usmerja dohodne zahteve na ustrezen krmilnik, tako da glagol zahteve HTTP ujema z ustrezno metodo dejanja.

Z ASP.Net 5 (ki bo kmalu objavljen kot del Visual Studio 2015) obstaja enoten jedrni okvir - imate en sam izhodni okvir, en sam model zavezujočega ogrodja in cevovod z enim filtrom. Zdaj imate enotno jedro za ASP.Net MVC, ASP.Net Web API in ASP.Net Web Pages. Torej, zdaj je samo en tip krmilnika za obdelavo zahtev: to je skupno vašim programom ASP.Net MVC, ASP.Net Web API in ASP.Net.

Privzeta predloga poti MVC je videti tako:

{krmilnik} / {akcija} / {id}

Nasprotno pa je privzeta pot spletnega API-ja videti tako:

api / {krmilnik} / {id}

Privzeta pot, ustvarjena pri ustvarjanju novega projekta spletnega API-ja v Visual Studio, je videti tako:

javni statični razred WebApiConfig

{

javni statični void Register (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

ime: "DefaultApi",

routeTemplate: "api / {krmilnik} / {id}",

privzeto: novo {id = RouteParameter.O optional}

);

}

}

Upoštevajte, kako pred privzeto potjo stoji predpona "api". Dobra praksa je, da poti svoje spletne aplikacije API definirate tako, da jim dodate predpono "api", da se razlikujejo od standardne poti MVC. Drugače opomba, ko pogledate privzeto pot za projekt spletnega API-ja, ne boste videli parametra poti "{action}" - izvajalno okolje Web API preslika zahteve v ustrezna dejanja, ki temeljijo na glagolu HTTP v zahteve.

Lahko pa spremenite definicijo poti spletnega API-ja tako, da vključuje parameter "{action}". Naslednji delček kode prikazuje, kako izgleda spremenjeni razred WebApiConfig.

javni statični razred WebApiConfig

{

javni statični void Register (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

ime: "DefaultApi",

routeTemplate: "api / {controller} / {action} / {id}",

privzeto: novo {id = RouteParameter.O optional}

);

}

}

Zdaj, ko ste kot del poti navedli "{action}", morate pri klicu metode WebAPI določiti dejanje. Upoštevajte naslednji URL: // idgservice / author / 1

V tem URL-ju je idgservice ime domene, v kateri je gostoval WebAPI, avtorji so ime krmilnika in 1 se posreduje kot parameter. Vendar to ne bi delovalo, če ste v definiciji poti opredelili "{action}". V tem primeru bi morali izrecno omeniti ime dejanja. Tu je pravi URL, ki vključuje ime dejanja kot del URL-ja: // idgservice / avtorji / GetAuthorDetails /

Upoštevajte, da je ime dejanja v zgornjem URL-ju GetAuthorDetails in je bilo omenjeno kot del spremenjenega URL-ja.

Za dejanje lahko določite tudi metodo HTTP z uporabo atributov HttpGet, HttpPut, HttpPost ali HttpDelete. Spodnji delček kode prikazuje, kako to doseči:

javni razred AuthorsController: ApiController

{

[HttpGet]

javni avtor GetAuthor (id) {}

}

Če želite za dejanje dovoliti več metod HTTP, lahko izkoristite atribut AcceptVerbs, kot je prikazano spodaj:

izdelki javnega razreda ProductsController: ApiController

{

[AcceptVerbs ("GET", "HEAD")]

javni avtor GetAuthor (id) {}

}

Dejanje lahko tudi preglasite z atributom ActionName, kot je prikazano v spodnjem delčku kode:

javni razred AuthorsController: ApiController

{

[HttpGet]

[ActionName ("AuthorDetails")]

javni avtor GetAuthor (id) {}

}

Upoštevajte, da lahko tudi preprečite, da bi se metoda priklicala kot dejanje, tako da izkoristite atribut NonAction, kot je prikazano spodaj.

javni razred AuthorsController: ApiController

{

[HttpGet]

[NonAction]

javna logična logična validateLogin (id) {}

}

Copyright sl.verticalshadows.com 2024

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