Programmēšana

Kā izmantot atribūtu maršrutēšanu ASP.NET Core

ASP.NET Core maršrutēšanas starpprogrammatūra ir prasmīga kartēt ienākošos pieprasījumus attiecīgajiem maršrutu apstrādātājiem. Maršrutēšanu ASP.NET Core var iestatīt divos dažādos veidos: maršrutēšana uz atribūtiem un maršrutēšana uz konvencijām.

Atšķirībā no maršrutēšanas, kuras pamatā ir konvencija, kurā maršrutēšanas informācija ir norādīta vienā vietā, atribūtu maršrutēšana ļauj ieviest maršrutēšanu, izrotājot savas darbības metodes ar atribūtiem. Šajā rakstā ir sniegta diskusija par to, kā mēs varam strādāt ar maršrutiem, kuru pamatā ir atribūti, ASP.NET Core MVC.

Lai strādātu ar šajā rakstā sniegtajiem kodu piemēriem, sistēmā jābūt instalētai Visual Studio 2019. Ja jums vēl nav kopijas, varat lejupielādēt Visual Studio 2019 šeit.

Izveidojiet ASP.NET Core 3.1 MVC projektu Visual Studio 2019

Vispirms izveidosim ASP.NET Core projektu Visual Studio 2019. Pieņemot, ka Visual Studio 2019 ir instalēta jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu jaunu ASP.NET Core projektu Visual Studio.

  1. Palaidiet Visual Studio IDE.
  2. Noklikšķiniet uz “Izveidot jaunu projektu”.
  3. Logā “Izveidot jaunu projektu” parādīto veidņu sarakstā atlasiet “ASP.NET Core Web Application”.
  4. Noklikšķiniet uz Tālāk.
  5. Logā “Konfigurēt jauno projektu” norādiet jaunā projekta nosaukumu un vietu.
  6. Pēc izvēles atzīmējiet izvēles rūtiņu “Novietot risinājumu un projektu vienā direktorijā” atkarībā no jūsu vēlmēm.
  7. Noklikšķiniet uz Izveidot.
  8. Nākamajā logā “Izveidot jaunu ASP.NET Core tīmekļa lietojumprogrammu” augšdaļā esošajā nolaižamajā sarakstā atlasiet .NET Core kā izpildlaiku un ASP.NET Core 3.1 (vai jaunāku).
  9. Atlasiet “Web Application (Model-View-Controller)” kā projekta veidni, lai izveidotu jaunu ASP.NET Core MVC lietojumprogrammu.
  10. Pārliecinieties, vai nav atzīmētas izvēles rūtiņas “Iespējot Docker atbalstu” un “Konfigurēt HTTPS”, jo mēs šeit neizmantosim šīs funkcijas.
  11. Pārliecinieties, vai autentifikācijai ir iestatīta vērtība “Nav autentifikācijas”, jo mēs arī neizmantosim autentifikāciju.
  12. Noklikšķiniet uz Izveidot.

Veicot šīs darbības, Visual Studio 2019 tiks izveidots jauns ASP.NET Core MVC projekts. Šo projektu izmantosim tālāk esošajās sadaļās, lai ilustrētu, kā mēs varam strādāt ar atribūtu maršrutēšanu ASP.NET Core 3.1.

Izveidojiet kontroliera klasi ASP.NET Core MVC

Izveidojiet jaunu kontrolieri ar nosaukumu DefaultController un aizstājiet DefaultController noklusējuma avota kodu ar šādu kodu:

  public class DefaultController: kontrolieris

    {

[Maršruts ("")]

[Maršruts ("Noklusējums")]

[Maršruts ("Noklusējums / Indekss")]

publiskais ActionResult indekss ()

        {

atgriezt jaunu EmptyResult ();

        }

[Maršruts ("Default / GetRecordsById / {id}")]

public ActionResult GetRecordsById (int id)

        {

virkne str = virkne. Formāts

("ID, kas nodots kā parametrs, ir: {0}", id);

atgriezties Ok (str);

        }

    }

Izmantojiet atribūtu maršrutēšanu kontroliera līmenī ASP.NET Core

Atribūtu maršrutēšanu var izmantot gan kontroliera, gan darbības metodes līmenī. Ja mēs izmantojam maršruta atribūtu kontroliera līmenī, tad maršruts ir piemērots visām šī kontroliera darbības metodēm.

Pārbaudot mūsu klasi DefaultController, ievērojot, ka maršruta noklusējums tiek izmantots vairākas reizes, norādot maršruta veidni darbības metodēm. Šis koda fragments parāda, kā kontroliera līmenī varat norādīt dažādus maršruta atribūtus, lai elastīgāk izmantotu atribūtu maršrutēšanu.

[Maršruts ("Noklusējums")]

publiskā klase DefaultController: kontrolieris

{

[Maršruts ("")]

[Maršruts ("Indekss")]

publiskais ActionResult indekss ()

  {

atgriezt jaunu EmptyResult ();

   }

[HttpGet]

Maršruts ("Default / GetRecordsById / {id}")]

public ActionResult GetRecordsById (int id)

  {

virkne str = string.Format ("ID, kas nodots kā parametrs, ir: {0}", id);

atgriezties Ok (str);

   }

}

Izmantojot maršruta atribūtus gan kontroliera, gan darbības metodes līmenī, kontroliera līmenī lietotā maršruta veidne tiek pievienota maršruta veidnei, kas norādīta darbības metodes līmenī.

Jums var būt nepieciešams kopīgs kontroliera prefikss. Kad to izdarīsit, jums jāizmanto atribūts [RoutePrefix], kā parādīts tālāk sniegtajā koda fragmentā.

[RoutePrefix ("pakalpojumi")]

publiskā klase HomeController: kontrolieris

{

// Darbības metodes

}

Izmantojiet atribūtu maršrutēšanu darbības metožu līmenī programmā ASP.NET Core

Skatiet iepriekš parādīto DefaultController klasi. Kā redzat, DefaultController klases Index metodē esam norādījuši trīs maršrutus. Tas nozīmē, ka katrs no šiem vietrāžiem URL izmantos DefaultController darbības metodi Index ().

// vietējais saimnieks: 11277

// localhost: 11277 / home

// localhost: 11277 / home / index

Tāpat kā maršrutēšanā, kas balstīta uz konvencijām, parametrus varat norādīt arī maršrutā, kas balstīts uz atribūtiem. Citiem vārdiem sakot, maršruts, kas balstīts uz atribūtiem, ļauj norādīt maršruta atribūtus ar parametriem. Iepriekš parādītā DefaultController klases darbības metode GetRecordsById ir piemērs.

Ņemiet vērā, ka “{id}” norādītajā maršrutā apzīmē parametru vai vietas turētāju. Parametrs id šajā piemērā var būt jebkas, piemēram, virkne vai vesels skaitlis. Ko darīt, ja vēlaties ierobežot parametru tikai ar veseliem skaitļiem? To var sasniegt, izmantojot ierobežojumus.

Darbības metodē izmantojiet atribūtu maršruta ierobežojumus

Maršruta ierobežojumus izmanto, lai traucētu nederīgus pieprasījumus kontroliera darbībām. Piemēram, jūs varētu vēlēties, lai darbības metodei nodotais parametrs vienmēr būtu vesels skaitlis. Maršruta ierobežojumu izmantošanas sintakse ir {parametrs: ierobežojums}. Tālāk parādītais koda fragments to ilustrē. Ņemiet vērā, ka id parametrs šeit vienmēr ir vesels skaitlis.

[Maršruts ("Default / GetRecordsById / {id: int}")]

public ActionResult GetRecordsById (int id)

{

virkne str = string.Format ("ID, kas nodots kā parametrs, ir: {0}", id);

atgriezties Ok (str);

}

Atribūtu maršruta specifikācijās izmantojiet izvēles parametrus

Arī maršruta specifikācijā varat izmantot izvēles parametrus. Šis koda fragments parāda, kā to var panākt. Ņemiet vērā, ka darbības metode šajā gadījumā tiktu izpildīta pat tad, ja id parametrs netiek nodots.

[Maršruts ("Sales / GetSalesByRegionId / {id?}")]

Ir svarīgi saprast, ka, izmantojot atribūtu maršrutēšanu, ne kontroliera nosaukumam, ne darbības metodes nosaukumam nav nekādas nozīmes, izvēloties, kura darbības metode tiks izpildīta. Apskatīsim to ar piemēru. Šis koda fragments ilustrē, kā URL ir mainīts darbības metodes GetRecordsById maršruta specifikācijā.

[Maršruts ("Sākums / GetRecordsById / {id: int}")]

public ActionResult GetRecordsById (int id)

{

virkne str = string.Format ("ID, kas nodots kā parametrs, ir: {0}", id);

atgriezties Ok (str);

}

Tagad varat izsaukt darbības metodi GetRecordsById, izmantojot šādu URL:

// localhost: 11277 / home / GetRecordsById / 1

Darbības metodē izmantojiet vairākus atribūtu maršruta ierobežojumus

Parametram ir iespējams piemērot arī vairākus ierobežojumus. Šis koda fragments parāda, kā to var panākt. Ņemiet vērā, ka parametra id minimālajai vērtībai jābūt 1, pretējā gadījumā tiks atgriezta kļūda 404.

[Maršruts ("Default / GetRecordsById / {id: int: min (1)}"]]

public ActionResult GetRecordsById (int id)

{

virkne str = string.Format ("ID, kas nodots kā parametrs, ir: {0}", id);

atgriezties Ok (str);

}

Izmantojiet HTTP darbības vārdus darbības metodes atribūtu maršrutos

Atribūtu maršrutēšanā varat izmantot pat HTTP darbības vārdus. Šis koda fragments parāda, kā to var panākt.

[HttpGet]

[Maršruts ("Default / GetRecordsById / {id: int: min (1)}"]]

public ActionResult GetRecordsById (int id)

{

virkne str = string.Format ("ID, kas nodots kā parametrs, ir: {0}", id);

atgriezties Ok (str);

}

Parasti izmantotie atribūtu maršruta ierobežojumi

Šeit ir saraksts ar ASP.NET Core visbiežāk izmantotajiem maršruta ierobežojumiem.

  • bool - izmanto, lai saskaņotu Būla vērtību
  • datetime - tiek izmantots, lai saskaņotu DateTime vērtību
  • decimāls - tiek izmantots, lai saskaņotu decimālo vērtību
  • dubultā - izmanto, lai saskaņotu 64 bitu peldošā komata vērtību
  • pludiņš - izmanto, lai saskaņotu 32 bitu peldošā komata vērtību
  • guid - tiek izmantots, lai saskaņotu GUID vērtību
  • int - izmanto, lai saskaņotu 32 bitu vesela skaitļa vērtību
  • garš - tiek izmantots, lai saskaņotu 64 bitu vesela skaitļa vērtību
  • max - tiek izmantots, lai saskaņotu veselu skaitli ar maksimālo vērtību
  • min - tiek izmantots, lai saskaņotu veselu skaitli ar minimālo vērtību
  • minlength - tiek izmantots, lai saskaņotu virkni ar minimālo garumu
  • regex - izmanto, lai atbilstu regulārajai izteiksmei

Izveidojiet pielāgotu atribūtu maršruta ierobežojumus

Varat arī izveidot savus pielāgotos maršruta ierobežojumus, izveidojot klasi, kas paplašina IRouteConstraint saskarni un ievieš atbilstības metodi, kā parādīts tālāk sniegtajā koda fragmentā.

publiskā klase CustomRouteConstraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter maršruts,

virknes maršrutsKey,

RouteValueDictionary vērtības, RouteDirection routeDirection)

        {

mest jaunu NotImplementedException ();

        }

    }

Atribūtu maršrutos kontroliera līmenī izmantojiet marķiera nomaiņu

ASP.NET Core MVC atribūtu maršrutēšana nodrošina atbalstu vēl vienai interesantai funkcijai ar nosaukumu marķiera nomaiņa. Marķierus [darbība], [apgabals] un [kontrolieris] varat izmantot savā kontrolierī, un šie marķieri tiks attiecīgi aizstāti ar darbību, apgabala un kontroliera nosaukumiem. Šis koda fragments parāda, kā to var panākt.

[Maršruts ("[kontrolieris] / [darbība]"]]

publiskā klase HomeController: kontrolieris

{

privāts tikai lasāms ILogger _logger;

publiskais mājas kontrolieris (ILogger logger)

   {

_logger = reģistrētājs;

   }

publiskais IActionResult indekss ()

   {

atgriezties View ();

   }

// Citas darbības metodes

}

Atribūtu maršrutēšana ASP.NET Core nodrošina lielāku kontroli un elastību pār jūsu tīmekļa lietojumprogrammas URI. Lai arī maršrutēšanu, kas balstīta uz konvencijām, var konfigurēt vienā vietā, ko savukārt var piemērot visiem jūsu lietojumprogrammas kontrolleriem, ir grūti atbalstīt noteiktus URI modeļus (piemēram, API versijas) ar maršrutēšanu, kas balstīta uz konvencijām.

Izmantojot atribūtu maršrutēšanu, jūs varat atsaistīt kontroliera un darbību nosaukumus no maršruta veidnes. Savās ASP.NET Core lietojumprogrammās varat pat izmantot maršrutēšanas un atribūtos balstītas maršrutēšanas kombināciju.

Kā paveikt vairāk programmā ASP.NET Core:

  • Kā nodot parametrus darbības metodēm ASP.NET Core MVC
  • Kā izmantot API analizatorus ASP.NET Core
  • Kā izmantot maršruta datu marķierus ASP.NET Core
  • Kā izmantot API versijas ASP.NET Core
  • Kā izmantot datu pārsūtīšanas objektus ASP.NET Core 3.1
  • Kā rīkoties ar 404 kļūdām ASP.NET Core MVC
  • Kā atkarības injekciju izmantot darbības filtros ASP.NET Core 3.1
  • Kā izmantot opciju modeli ASP.NET Core
  • Kā izmantot galapunkta maršrutēšanu ASP.NET Core 3.0 MVC
  • Kā eksportēt datus uz Excel programmā ASP.NET Core 3.0
  • Kā lietot LoggerMessage ASP.NET Core 3.0
  • Kā nosūtīt e-pastus ASP.NET Core
  • Kā reģistrēt datus SQL Server ASP.NET Core
  • Kā ieplānot darbus, izmantojot Quartz.NET ASP.NET Core
  • Kā atgriezt datus no ASP.NET Core Web API
  • Kā formatēt atbildes datus ASP.NET Core
  • Kā patērēt ASP.NET Core Web API, izmantojot RestSharp
  • Kā veikt asinhronas darbības, izmantojot Dapper
  • Kā izmantot funkciju karodziņus ASP.NET Core
  • Kā izmantot atribūtu FromServices ASP.NET Core
  • Kā strādāt ar sīkdatnēm ASP.NET Core
  • Kā strādāt ar statiskiem failiem ASP.NET Core
  • Kā izmantot URL pārrakstīšanas starpprogrammatūru ASP.NET Core
  • Kā ieviest ātruma ierobežošanu ASP.NET Core
  • Kā izmantot Azure Application Insights ASP.NET Core
  • Papildu NLog funkciju izmantošana ASP.NET Core
  • Kā rīkoties ar kļūdām ASP.NET Web API
  • Kā ieviest globālo izņēmumu apstrādi ASP.NET Core MVC
  • Kā rīkoties ar nulles vērtībām ASP.NET Core MVC
  • Uzlabota versiju veidošana ASP.NET Core Web API
  • Kā strādāt ar darbinieku pakalpojumiem ASP.NET Core
  • Kā izmantot datu aizsardzības API ASP.NET Core
  • Kā izmantot nosacīto starpprogrammatūru ASP.NET Core
  • Kā strādāt ar sesijas stāvokli ASP.NET Core
  • Kā rakstīt efektīvus kontrollerus ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found