Omejitve usmerjanja
ASP.NET Core lahko spremenljivke posredujete na URL-jih z definiranjem predlog usmerjanja, prav tako pa lahko zagotovite privzete, opcijske in omejitve za spremenljivke.
Omejitev se uporabi tako, da se na pot atributa doda določeno ime omejitve, ki se uporablja na naslednji način:
Nekatere omejitve so že navedene znotraj okvira, in sicer:
Omejitve | primer | Primeri tekem | Ponazoritev | int | {id:int} | 123456789, -123456789 | Ujemaj poljubno celo število | bool | {active:bool} | resnično, NAPAČNO | Ujemaj z resnico ali napačno (odvisno od velikih in velikih črk) | Datetime | {dob:datetime} | 2016-12-31, 2016-12-31 19:32 | Ujema se z veljavno vrednostjo DateTime (v fiksni lokaciji - glej opozorilo) | decimalno | {cena:decimal} | 49.99, -1,000.01 | Ustreza veljavnim decimalnim vrednostim (v fiksni lokaciji - glej opozorilo) | dvojni | {teža:dvojno} | 1,234, -1,001,01e8 | Ujema veljavne dvojne vrednosti (v fiksni lokaciji - glej opozorilo) | Plovec | {teža:float} | 1,234, -1,001,01e8 | Ustreza veljavnim vrednostim plavajočih vrednosti (v fiksni lokaciji - glej opozorila) | GUID | {id:guid} | CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638} | Ujema se z veljavnomi vrednostmi GUID | dolgo | {ticks:long} | 123456789, -123456789 | Ujema se z veljavnomi dolgimi vrednostmi | minlength(vrednost) | {uporabniško ime:minlength(4)} | Rick | Niz mora imeti vsaj 4 znake | maxlength(vrednost) | {filename:maxlength(8)} | Richard | Nizi ne smejo preseči 8 znakov | dolžina (dolžina) | {filename:length(12)} | somefile.txt | Niz mora imeti natanko 12 znakov | dolžina (min,max) | {filename:length(8,16)} | somefile.txt | Niz mora imeti vsaj 8 znakov in največ 16 znakov | min(vrednost) | {starost:min(18)} | 19 | Celoštevilska vrednost mora biti vsaj 18 | max(vrednost) | {starost:max(120)} | 91 | Vrednost celega števila ne sme presegati 120 | Doseg (minimum,maksimum) | {starost:razpon(18,120)} | 91 | Vrednost celega števila mora biti vsaj 18 in ne sme presegati 120 | alfa | {ime:alfa} | Rick | Niz mora biti sestavljen iz enega ali več abecednih znakov (a-z, občutljivo na velike črke). | regex(izraz) | {ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)} | 123-45-6789 | Niz mora ustrezati regularnemu izrazu (glej nasvete o definiranju regularnih izrazov) | Zahteva | {name:required} | Rick | Uporablja se za uveljavljanje prisotnosti neparametričnih vrednosti med generiranjem URL-jev |
Vgrajene omejitve delujejo za večino običajnih primerov uporabe, a včasih moramo vseeno prilagoditi želeni učinek.
Omejitve prilagojenega usmerjanja
Prilagojena omejitev je implementacija vmesnika IRouteConstraint in nato preobremenitev metode Match, ki ima štiri parametre.
Prvi parameter, httpContext, je kontekst trenutne zahteve
Drugi parameter, pot, je pot, kateri pripada trenutna omejitev
Tretji parameter, routeKey, je ime trenutno preverjene spremenljivke, na primer id v primeru na začetku članka Četrta vrednost parametra je slovarska vrednost, ki jo trenutni URL ujema, na primer pot primera na začetku članka; če je URL users/1, potem obstaja slovar s ključem = id , vrednostjo = 1. Seveda obstajajo tudi vrednosti za druge spremenljivke, kot so krmilnik, akcija itd.
Peti parameter, routeDirection, je enumerirana vrednost, ki predstavlja, ali URL zahteva splet ali ga generira metoda, kot je Url.Action.
Na primer, želimo definirati omejitev, ki določa, da morajo biti parametri, ki jih pot prenese, določena enumeracijska vrednost.
Najprej definirajmo enum:
Nato definiramo omejitve:
Dodajte prilagojene omejitve metodi ConfigureServices v Startup.cs:
Uporaba omejitev na poti:
(WebApplicationTest je trenutni imenski prostor)
{id:int:min(2)} Pot mora uporabiti min(2), sicer bo prišlo do konflikta za id = 0 ali id = 1.
Zaženite program in uskladite naše prilagojene omejitve, ko so poti api/test/0, api/test/1, api/test/true in api/test/false.
Če je pot api/test/{celo število večje od 2}, ujemamo drugo pot.
Drugi primeri ustrezajo tretji poti.
Sklep
Usmerjevalne omejitve so v nekaterih primerih zelo uporabna funkcija, saj lahko zmanjšajo kontrolne parametre v krmilniku, funkcija delne validacije parametrov pa se lahko implementira z deklarativnim potrdilom, nekatere podvojene kontrole pa je mogoče izvleči v omejitve za javno uporabo.
Konstruktor omejitve je mogoče vbrizgati, zato je lahko zelo razširljiv, nekaj preverjanja parametrov pa je mogoče opraviti z poizvedbami v bazi podatkov.
Uradna spletna stran omenja usmerjevalne omejitve le na kratko, ta članek pa ponuja konkretne primere uporabe usmerjevalnih omejitev.
|