Programmēšana

Maršrutēšanas izpēte Web API

ASP.Net Web API ir viegls ietvars, kas tiek izmantots bezvalstnieku HTTP pakalpojumu veidošanai. Varat izmantot Web API, lai izstrādātu un ieviestu RESTful pakalpojumus, kas darbojas ar HTTP. REST ir arhitektūras stils - ierobežojumu kopums, ko izmanto bezvalstnieku pakalpojumu ieviešanai. Web API jau ir kļuvis par izvēlēto tehnoloģiju vieglu HTTP pakalpojumu izveidei. Šajā ziņojumā es iepazīstināšu ar diskusiju par to, kā maršrutēšana darbojas Web API.

Veidojot Web API projektu Visual Studio, jūs ievērosiet, ka tiek izveidots arī MVC projekts. Līdzīgi kā ASP.Net MVC, maršrutēšanas konfigurācija Web API projektā tiek izsaukta no faila Global.asax. Web API projekts saglabā konfigurācijas informāciju maršrutās RouteConfig un WebApiConfig - abas no tām atrodas mapē Application_Start. Līdzīgi kā MVC projektā, jūs varētu novērot RouteConfig.cs failu, kas izveidots jūsu risinājuma mapē App_Start.

Web HTTP kontrolieris ir atbildīgs par HTTP pieprasījumu apstrādi. Pārziņa publiskās metodes ir pazīstamas kā darbības metodes. Tiklīdz ir saņemts pieprasījums, Web API izpildlaiks novirza pieprasījumu uz atbilstošo darbību, lai apstrādātu pieprasījumu. Tagad, lai noteiktu, kura darbība jāizsauc, Web API izpildlaiks izmanto maršrutēšanas tabulas priekšrocības. Atšķirībā no tipiskas ASP.Net MVC lietojumprogrammas, Web API izpildlaiks ienākošos pieprasījumus novirza attiecīgajam kontrollerim, saskaņojot pieprasījuma HTTP darbības vārdu ar atbilstošo darbības metodi.

Izmantojot ASP.Net 5 (drīzumā tiks izlaists kā daļa no Visual Studio 2015), ir vienots pamatsistēma - jums ir viena izbraukuma sistēma, viena modeļa saistoša sistēma un viena filtra cauruļvads. Tagad jums ir viens vienots kodols ASP.Net MVC, ASP.Net Web API un ASP.Net tīmekļa lapām. Tātad pieprasījumu apstrādei tagad ir tikai viena veida kontrolieris: tas ir kopīgs jūsu ASP.Net MVC, ASP.Net Web API un ASP.Net lietojumprogrammām.

Noklusējuma MVC maršruta veidne izskatās šādi:

{controller} / {action} / {id}

Turpretī noklusējuma Web API maršruts izskatās šādi:

api / {kontrolieris} / {id}

Noklusējuma maršruts, kas izveidots, izveidojot jaunu Web API projektu Visual Studio, izskatās šādi:

publiskā statiskā klase WebApiConfig

{

public static void Register (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

nosaukums: "DefaultApi",

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

noklusējumi: new {id = RouteParameter.Optional}

);

}

}

Ievērojiet, kā noklusējuma maršrutu pirms prefiksa ievada "api". Laba prakse ir definēt Web API lietojumprogrammas maršrutus, pirms tiem pievienojot "api", lai tie atšķirtu no standarta MVC maršruta. Citā piezīmē, aplūkojot Web API projekta noklusējuma maršrutu, jūs neredzēsiet maršruta parametru “{action}” - Web API izpildlaiks pieprasījumus piesaista attiecīgajām darbībām, pamatojoties uz pieprasījumiem.

Tomēr jūs varat modificēt Web API maršruta definīciju, iekļaujot parametru “{action}”. Šis koda fragments ilustrē modificētās WebApiConfig klases izskatu.

publiskā statiskā klase WebApiConfig

{

public static void Register (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

nosaukums: "DefaultApi",

routeTemplate: "api / {kontrolieris} / {darbība} / {id}",

noklusējumi: new {id = RouteParameter.Optional}

);

}

}

Tagad, kad kā daļu no maršruta esat norādījis “{action}”, jums jānorāda darbība, atsaucoties uz WebAPI metodi. Apsveriet šādu URL: // idgservice / author / 1

Šajā URL idgservice ir domēna nosaukums, kurā tika mitināta WebAPI, autori ir kontrollera nosaukums, un parametrs 1 tiek nodots kā parametrs. Tomēr tas nedarbotos, ja maršruta definīcijā būtu definēts “{action}”. Šajā gadījumā zvanot uz WebAPI, jums skaidri jānorāda darbības nosaukums. Šeit ir pareizs URL, kurā darbības nosaukums ietver URL daļu: // idgservice / autori / GetAuthorDetails /

Ņemiet vērā, ka darbības nosaukums iepriekš minētajā URL ir GetAuthorDetails un ir minēts kā modificētā URL sastāvdaļa.

Varat arī norādīt darbības HTTP metodi, izmantojot atribūtu HttpGet, HttpPut, HttpPost vai HttpDelete. Tālāk sniegtais koda fragments parāda, kā to var panākt:

publiskā klase AuthorsController: ApiController

{

[HttpGet]

publiskais autors GetAuthor (id) {}

}

Ja vēlaties kādai darbībai atļaut vairākas HTTP metodes, varat izmantot atribūta AcceptVerbs priekšrocības, kā parādīts zemāk:

public class ProductsController: ApiController

{

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

publiskais autors GetAuthor (id) {}

}

Darbību varat arī ignorēt, izmantojot atribūtu ActionName, kā parādīts tālāk sniegtajā koda fragmentā:

publiskā klase AuthorsController: ApiController

{

[HttpGet]

[ActionName ("Autora dati")]

publiskais autors GetAuthor (id) {}

}

Ņemiet vērā, ka jūs varat arī novērst metodes izsaukšanu kā darbību, izmantojot NonAction atribūtu, kā parādīts zemāk.

publiskā klase AuthorsController: ApiController

{

[HttpGet]

[NonAction]

public Boolean ValidateLogin (id) {}

}

Copyright lv.verticalshadows.com 2024

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