Reititysrajoitteet
ASP.NET Corea voit välittää muuttujia URL-osoitteissa määrittämällä reititysmalleja, ja voit tarjota oletuksia, valinnaisia ja rajoituksia muuttujille.
Rajoitetta käytetään lisäämällä määritelty rajoitteen nimi attribuuttireittiin, jota käytetään seuraavasti:
Jotkin rajoitteet on jo esitetty kehyksen sisällä, kuten seuraavat:
Rajoitteet | esimerkki | Esimerkkejä otteluista | havainnollistaa | int | {id:int} | 123456789, -123456789 | Täsmää mikä tahansa kokonaisluku | bool | {active:bool} | totta, VÄÄRÄ | Täsmäys tosi tai epätosi (kirjainkoon herkkä) | Päivämääräaika | {dob:datetime} | 2016-12-31, 2016-12-31 19:32 | Vastaa kelvollisia DateTime-arvoja (kiinteässä paikassa – katso varoitus) | desimaali | {price:decimal} | 49.99, -1,000.01 | Vastaa kelvollisia desimaaliarvoja (kiinteässä lokaliteetissa – katso varoitus) | tupla | {weight:double} | 1.234, -1,001.01e8 | Vastaa kelvollisia kaksoisarvoja (kiinteässä paikallisuudessa – katso varoitus) | Float | {weight:float} | 1.234, -1,001.01e8 | Täsmää kelvolliset kelluntaarvot (kiinteässä paikallisuudessa – katso varoitukset) | Guid | {id:guid} | CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638} | Osuu päteviin GUID-arvoihin | pitkä | {tikittää:pitkä} | 123456789, -123456789 | Yhteensopivat pitkien arvojen kohdalla | minlength(arvo) | {käyttäjänimi:minlength(4)} | Rick | Merkkijonon tulee olla vähintään 4 merkkiä | maxlength(arvo) | {tiedostonimi:maxlength(8)} | Richard | Merkkijonojen pituus ei saa ylittää 8 merkkiä | pituus(pituus) | {tiedostonimi:pituus(12)} | somefile.txt | Merkkijonon täytyy olla täsmälleen 12 merkkiä | pituus(min,maksimi) | {tiedostonimi:pituus(8,16)} | somefile.txt | Merkkijonon tulee olla vähintään 8 merkkiä ja enintään 16 merkkiä | min(arvo) | {age:min(18)} | 19 | Kokonaislukuarvon on oltava vähintään 18 | max(value) | {age:max(120)} | 91 | Kokonaislukuarvon ei saa ylittää 120 | Etäisyys (min, maksimi) | {age:range(18,120)} | 91 | Kokonaislukuarvon tulee olla vähintään 18 eikä ylittää 120 | alfa | {name:alpha} | Rick | Merkkijonon on koostuttava yhdestä tai useammasta aakkosmerkistä (a-z, kirjainkoja herkkä). | regex (lauseke) | {ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)} | 123-45-6789 | Merkkijonon on vastattava säännöllistä lauseketta (katso vinkit säännöllisten lausekkeiden määrittelyyn) | pakollinen | {nimi:vaaditaan} | Rick | Käytetään valvomaan ei-parametristen arvojen läsnäoloa URL-osoitteiden generoinnin aikana |
Sisäänrakennetut rajoitteet toimivat useimmissa yleisissä käyttötapauksissa, mutta joskus meidän täytyy silti räätälöidä haluamamme efekti.
Mukautetut reititysrajoitteet
Mukautettu rajoite on toteuttaa IRouteConstraint-rajapinta ja ylikuormittaa Match-metodi, jossa on neljä parametria.
Ensimmäinen parametri, httpContext, on nykyisen pyynnön konteksti
Toinen parametri, reitti, on reitti, johon nykyinen rajoite kuuluu
Kolmas parametri, routeKey, on tällä hetkellä tarkistetun muuttujan nimi, kuten id esimerkissä artikkelin alussa Neljäs parametriarvo on sanakirjan arvo, johon nykyinen URL vastaa, kuten esimerkin reitti artikkelin alussa; jos URL on users/1, on olemassa sanakirja, jonka avain = id , value = 1. Tietenkin on myös arvoja muille muuttujille, kuten ohjaimelle, toiminnolle jne.
Viides parametri, routeDirection, on lueteltu arvo, joka kuvaa, pyydetäänkö URL verkossa vai generoidaanko se esimerkiksi Url.Actionilla.
Esimerkiksi haluamme määritellä rajoitteen, joka määrittelee, että reitin kautta kulkevien parametrien on oltava määritelty luetteloarvo.
Määritellään ensin enum:
Määritellään sitten rajoitteet:
Lisää mukautetut rajoitteet ConfigureServices-metodiin Startup.cs:
Reittirajoitusten käyttö:
(WebApplicationTest on nykyinen nimiavaruus)
{id:int:min(2)} -reitillä on käytettävä min(2), muuten id = 0 tai id = 1 välillä syntyy ristiriita.
Aja ohjelma ja sovita omat rajoitteemme, kun reitit ovat api/test/0, api/test/1, api/test/true ja api/test/false.
Jos reitti on api/testi/{kokonaisluku, joka on suurempi kuin 2}, sovita toinen reitti.
Muut tapaukset vastaavat kolmatta reittiä.
johtopäätös
Reititysrajoitteet ovat joissain tilanteissa erittäin hyödyllinen ominaisuus, sillä ne voivat pienentää tarkistusparametreja ohjaimessa, ja osittaisen parametrien validoinnin funktio voidaan toteuttaa deklaratiivisella attruibutella, ja joitakin kaksoistarkistuksia voidaan poimia rajoitteiksi julkista käyttöä varten.
Rajoitteen konstruktori voidaan injektoida, joten se on hyvin laajennettavissa, ja jonkin verran parametrien varmennus voidaan tehdä kyselyllä tietokannasta.
Virallinen verkkosivusto mainitsee reititysrajoitukset vain lyhyesti, ja tässä artikkelissa annetaan konkreettisia esimerkkejä reititysrajoitteiden käytöstä.
|