Maršrutēšanas ierobežojumi
ASP.NET Core, varat nodot mainīgos URL, definējot maršrutēšanas veidnes, un varat nodrošināt noklusējuma, izvēles un ierobežojumus mainīgajiem.
Ierobežojums tiek izmantots, pievienojot norādīto ierobežojuma nosaukumu atribūta maršrutam, kas tiek izmantots šādi:
Daži ierobežojumi jau ir paredzēti sistēmā, šādi:
Ierobežojumi | piemērs | Sērkociņu piemēri | Ilustrētu | int | {id:int} | 123456789, -123456789 | Atbilstība jebkuram veselam skaitlim | Būls | {aktīvs:bool} | patiess, NEPATIESS | Atbilstība true vai false (reģistrjutīga) | Datums un laiks | {dzimšanas datums:datums} | 2016-12-31, 2016-12-31 7:32pm | Atbilst derīgām DateTime vērtībām (fiksētā apvidū - skatiet brīdinājumu) | decimāldaļa | {cena:decimāldaļa} | 49.99, -1,000.01 | Atbilst derīgām decimāldaļām (fiksētā vietā - skatīt brīdinājumu) | divvietīgs | {svars:dubultā} | 1,234, -1,001,01e8 | Atbilst derīgām dubultām vērtībām (fiksētā vietā - skatīt brīdinājumu) | pludiņš | {svars:pludiņš} | 1,234, -1,001,01e8 | Atbilst derīgām pludiņa vērtībām (fiksētā vietā - skatīt brīdinājumus) | GUID | {id:guid} | CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638} | Atbilst derīgām GUID vērtībām | garš | {ērces:garš} | 123456789, -123456789 | Atbilst derīgām garajām vērtībām | minlength(vērtība) | {lietotājvārds:minlength(4)} | Riks | Virknei jābūt vismaz 4 rakstzīmēm | maxlength(vērtība) | {faila nosaukums:maxlength(8)} | Ričards | Virknes nedrīkst pārsniegt 8 rakstzīmes | garums (garums) | {faila nosaukums:garums(12)} | somefile.txt | Virknei jābūt precīzi 12 rakstzīmēm | garums (min, max) | {faila nosaukums:garums(8,16)} | somefile.txt | Virknei jābūt vismaz 8 rakstzīmēm un ne vairāk kā 16 rakstzīmēm | min(vērtība) | {vecums:min(18)} | 19 | Veselam skaitlim jābūt vismaz 18 | max(vērtība) | {Vecums:maks.(120)} | 91 | Vesela skaitļa vērtība nedrīkst pārsniegt 120 | diapazons (min, maks.) | {vecums:diapazons(18,120)} | 91 | Veselam skaitlim jābūt vismaz 18 un nedrīkst pārsniegt 120 | alfa | {vārds:alfa} | Riks | Virknei jāsastāv no vienas vai vairākām alfabēta rakstzīmēm (a-z, reģistrjutīga). | regex(izteiksme) | {ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)} | 123-45-6789 | Virknei jāatbilst regulārajai izteiksmei (skatiet padomus par regulāro izteiksmju definēšanu) | Nepieciešams | {vārds:obligāts} | Riks | Izmanto, lai URL ģenerēšanas laikā ieviestu neparametrisku vērtību klātbūtni |
Iebūvētie ierobežojumi darbojas visbiežāk sastopamajos lietošanas gadījumos, taču dažreiz mums joprojām ir jāpielāgo vēlamais efekts.
Pielāgoti maršrutēšanas ierobežojumi
Pielāgots ierobežojums ir ieviest IRouteConstraint interfeisu un pēc tam pārslogot Match metodi, kurai ir četri parametri.
Pirmais parametrs httpContext ir pašreizējā pieprasījuma konteksts
Otrais parametrs maršruts ir maršruts, kuram pieder pašreizējais ierobežojums
Trešais parametrs, routeKey, ir pašlaik pārbaudītā mainīgā nosaukums, piemēram, id piemērā raksta sākumā Ceturtā parametra vērtība ir vārdnīcas vērtība, kurai atbilst pašreizējais URL, piemēram, piemēra maršruts raksta sākumā, ja URL ir lietotāji/1, tad ir vārdnīca ar atslēgu = id , vērtība = 1. Protams, ir arī citu mainīgo lielumu vērtības, piemēram, kontrolieris, darbība utt.
Piektais parametrs routeDirection ir uzskaitīta vērtība, kas norāda, vai URL pieprasa tīmeklis vai ģenerē tāda metode kā Url.Action.
Piemēram, mēs vēlamies definēt ierobežojumu, kas nosaka, ka maršruta nodotajiem parametriem jābūt norādītajai uzskaitījuma vērtībai.
Vispirms definēsim uzskaitījumu:
Pēc tam definējiet ierobežojumus:
Pievienojiet pielāgotus ierobežojumus metodei ConfigureServices pakalpojumā Startup.cs:
Maršrutu ierobežojumu izmantošana:
(WebApplicationTest ir pašreizējā nosaukumtelpa)
{id:int:min(2)} maršrutam jāizmanto min(2), pretējā gadījumā radīsies konflikts id = 0 vai id = 1.
Palaidiet programmu un izpildiet mūsu pielāgotos ierobežojumus, ja maršruti ir api/test/0, api/test/1, api/test/true un api/test/false.
Ja maršruts ir api/test/{vesels skaitlis lielāks par 2}, saskaņojiet otro maršrutu.
Citi gadījumi atbilst trešajam maršrutam.
Secinājums
Maršrutēšanas ierobežojumi dažos scenārijos ir ļoti noderīga funkcija, kas var samazināt kontroliera pārbaudes parametrus, un daļējas parametru validācijas funkciju var īstenot, izmantojot deklaratīvu attruibute, un dažas dublikātu pārbaudes var iegūt ierobežojumos publiskai lietošanai.
Ierobežojuma konstruktoru var ievadīt, tāpēc tas var būt ļoti paplašināms, un dažas parametru pārbaudes var veikt, vaicājot datu bāzē.
Oficiālajā tīmekļa vietnē tikai īsi minēti maršrutēšanas ierobežojumi, un šajā rakstā ir sniegti konkrēti maršrutēšanas ierobežojumu izmantošanas piemēri.
|