ASP.Net Web API on kevyt kehys, jota käytetään valtiottomien HTTP-palveluiden rakentamiseen. Voit käyttää Web-sovellusliittymää RESTful-palvelujen suunnitteluun ja toteuttamiseen HTTP: llä. REST on arkkitehtoninen tyyli - joukko rajoituksia, joita käytetään kansalaisuudettomien palvelujen toteuttamiseen. Web-sovellusliittymästä on jo tullut valittu tekniikka kevyiden HTTP-palvelujen rakentamiseen. Tässä viestissä esitän keskustelun siitä, miten reititys toimii Web-sovellusliittymässä.
Kun luot Web API -projektin Visual Studiossa, huomaa, että luodaan myös MVC-projekti. Samoin kuin ASP.Net MVC, Web API -projektin reititysmääritykset kutsutaan Global.asax-tiedostosta. Web-sovellusliittymäprojekti tallentaa kokoonpanotiedot RouteConfig- ja WebApiConfig-luokkiin - molemmat näistä ovat Application_Start-kansiossa. Samanlainen kuin MVC-projekti, havaitset RouteConfig.cs-tiedoston, joka on luotu ratkaisun App_Start-kansioon.
Web-sovellusliittymän ohjain on vastuussa HTTP-pyyntöjen käsittelystä. Ohjaimen julkiset menetelmät tunnetaan toimintamenetelminä. Heti kun pyyntö on vastaanotettu, Web-sovellusliittymän ajoaika ohjaa pyynnön asianmukaiseen toimintoon pyynnön käsittelemiseksi. Web-sovellusliittymän ajonaika hyödyntää nyt reititystaulukkoa voidakseen määrittää, mihin toimintoon pitäisi ryhtyä. Toisin kuin tyypillinen ASP.Net MVC -sovellus, Web-sovellusliittymän ajonaika reitittää saapuvat pyynnöt sopivaan ohjaimeen sovittamalla pyynnön HTTP-verbi sopivaan toimintamenetelmään.
ASP.Net 5: n (julkaistaan pian osana Visual Studio 2015) kanssa on olemassa yhtenäinen ydinkehys - sinulla on yksi lähtökehys, yhden mallin sitova kehys ja yhden suodattimen putki. Sinulla on nyt yksi yhtenäinen ydin ASP.Net MVC: lle, ASP.Net Web -sovellusliittymälle ja ASP.Net-verkkosivuille. Joten nyt on vain yksi ohjain, joka käsittelee pyyntöjä: se on yhteistä ASP.Net MVC-, ASP.Net Web API- ja ASP.Net-sovelluksillesi.
MVC-oletusreittimalli näyttää tältä:
{controller} / {action} / {id}
Sen sijaan oletusarvoinen Web-sovellusliittymän reitti näyttää tältä:
Oletusreitti, joka luodaan luodessasi uuden Web API -projektin Visual Studiossa, näyttää tältä: julkinen staattinen luokka WebApiConfig { public static void Register (HttpConfiguration config) { config.Routes.MapHttpRoute ( nimi: "DefaultApi", routeTemplate: "api / {ohjain} / {id}", oletusarvot: uusi {id = RouteParameter.Optional} ); } } Huomaa, kuinka oletusreitti on etuliitteellä "api". On hyvä käytäntö määritellä Web-sovellusliittymän reitit etuliittämällä ne "api" -merkkeihin, jotta ne eroavat tavallisesta MVC-reitistä. Toisessa huomautuksessa, kun tarkastelet Web-sovellusliittymän projektin oletusreittiä, et näe reittiparametria "{action}" - Web-sovellusliittymän ajonaikainen kartoittaa pyynnöt asianmukaisiin toimintoihin pyynnöt. Voit kuitenkin muokata Web-sovellusliittymän reitin määrittelyä sisällyttämään parametri "{action}". Seuraava koodinpätkä kuvaa, kuinka muokattu WebApiConfig-luokka näyttää. { public static void Register (HttpConfiguration config) { config.Routes.MapHttpRoute ( nimi: "DefaultApi", routeTemplate: "api / {ohjain} / {toiminta} / {id}", oletusarvot: uusi {id = RouteParameter.Optional} ); } } Nyt kun olet määrittänyt "{action}" osana reittiä, sinun on määritettävä toiminto, kun vedot WebAPI-menetelmää. Harkitse seuraavaa URL-osoitetta: // idgservice / author / 1 Tässä URL-osoitteessa idgservice on verkkotunnuksen nimi, jossa WebAPI on isännöity, tekijät ovat ohjaimen nimi ja 1 välitetään parametrina. Tämä ei kuitenkaan toimisi, jos olet määrittänyt "{action}" reitin määrittelyssä. Sinun on mainittava nimenomaisesti toiminnan nimi kutsuttaessa WebAPI: täsi tässä tapauksessa. Tässä on oikea URL-osoite, joka sisältää toiminnon nimen osana URL-osoitetta: // idgservice / author / GetAuthorDetails / Huomaa, että yllä olevan URL-osoitteen toiminnan nimi on GetAuthorDetails ja se on mainittu osana muokattua URL-osoitetta. Voit myös määrittää toiminnon HTTP-menetelmän käyttämällä HttpGet-, HttpPut-, HttpPost- tai HttpDelete-määritettä. Alla annettu koodinpätkä kuvaa, miten tämä voidaan saavuttaa: { [HttpGet] julkinen kirjailija GetAuthor (id) {} } Jos haluat sallia useita HTTP-menetelmiä toiminnolle, voit hyödyntää AcceptVerbs-määritettä alla esitetyllä tavalla: { [AcceptVerbs ("GET", "HEAD")] julkinen kirjailija GetAuthor (id) {} } Voit myös ohittaa toiminnon käyttämällä ActionName-määritettä alla olevan koodinpätkän mukaisesti: { [HttpGet] [ActionName ("AuthorDetails")] julkinen kirjailija GetAuthor (id) {} } Huomaa, että voit myös estää menetelmää käyttämästä toimintona hyödyntämällä NonAction-määritettä alla esitetyllä tavalla. public class AuthorsController: ApiController { [HttpGet] [NonAction] public Boolean ValidateLogin (id) {} }api / {ohjain} / {id}
julkinen staattinen luokka WebApiConfig
public class AuthorsController: ApiController
public class ProductsController: ApiController
public class AuthorsController: ApiController