Restful Routing for ASP.NET MVC, a Ruby on Rails routing DSL alapján. Ez UTLIZES HTTP igék tartani egyedi utak minimális, miközben optimalizálja a vezérlők szerkezetét.

PM > Install-Package RestfulRouting

Üdvözöljük a Restful Routing for ASP.NET MVC! Az Útválasztás vitathatatlanul az összes középpontjában áll ASP.Net MVC alkalmazások. Az útvonalak kezelése nehézkes, frusztráló és nem produktív lehet. Egyes fejlesztők mindenre kiterjedő útvonalat használnak, ami váratlan problémákhoz vezethet az alkalmazás növekedésével. Restful Routing megoldja a routing Management kérdés azáltal, hogy egy véleményes felület regisztráció útvonalakat.

reméljük, úgy találja, hogy ez a könyvtár olyan könnyen használható, hogy akkor csoda, hogy valaha is kifejlesztett ASP.Net MVC alkalmazások nélkül.

Golden Seven

Restful Routing alapja az ötlet Resources és a Golden Seven akciók:

művelet HTTP módszer
INDEX GET
megjelenítés kap
létrehozás hozzászólás
új kap
szerkesztés GET
frissítés fel
megsemmisítés törlés

a Restful Routing célja, hogy tudatossá tegye a vezérlőket. Bár adott esetben meghajlíthatja a szabályokat, valóban arra kell összpontosítania, hogy az összes vezérlő erre a hét műveletre korlátozódjon. Ha harcolsz a Restful Routing konvencióival, akkor nem fogod kihasználni a véleményes keretrendszerünk erejét,és szerencsétlen leszel.

alapértelmezett útvonal

mielőtt a Restful Routingba merülnék, szeretném megvitatni a ASP.NET MVC. Számos kezdő sablonban megtalálható, ez egy hasznos eszköz az induláshoz, de nem javaslom, hogy bármilyen termelési környezetben használja. Az alábbiakban felsorolom az okokat:

  • a projekt bármely vezérlője akkor is elérhető lesz, ha nincs regisztrálva olyan útválasztási keretrendszerrel, mint a Restful Routing.
  • ez oda vezethet, hogy váratlan kifelé útvonal felbontása és órányi hibakeresés.

1.lépés. Restful Routing telepítése

az induláshoz feltételezzük, hogy egy meglévő ASP.Net MVC projekt és megérteni, hogyan juthat el erre a pontra.

nyissa meg a Csomagkezelő konzolt, és írja be a következőt:PM> Install-Package RestfulRouting.

ha nem kívánja használni a Csomagkezelő konzolt, kattintson a jobb gombbal a webprojektre, és válassza a “NuGet csomagok kezelése” helyi menüpontot. Keresés: RestfulRouting telepítse a csomagot.

2.lépés. Restful Routing konfigurálása

néhány változtatásnak meg kellett történnie a projektben, nevezetesen két fájlt adtak hozzá: Routes.csés ApplicationController.

Routes.cs úgy kell kinéznie, mint a jobb oldali szakasz. Van egy kis segítség már szerepel az Ön számára ebben a fájlban. Nem mindenki ír blogalkalmazást, ezért nyugodtan törölje a kommentált kódot, miután átnézte.

vegye figyelembe a WebActivator függőségét, ez biztosítja az útvonalak regisztrálását az alkalmazás indításakor. Dönthet úgy, hogy eltávolítja ezt a függőséget, ha inkább maga hívja a Start módszert.

// setting the root routemap.Root<HomeController>(x => x.Index());

a konfigurációhoz feltétlenül állítsa be a Root;

amellett, hogy Routes.cs akkor is kap ApplicationController. Ennek az alapvezérlőnek a használata nem kötelező, de rendelkezik a

formátum eredményeinek felhasználásához szükséges kóddal 3.lépés. A motor konfigurációjának megtekintése (opcionális)

ASP.Net az MVC a nézetmotoroktól függ, hogy megtalálja a nézeteit. Míg az alapértelmezett nézet motor rendben van, azt találtuk, hogy a mappaszerkezet, hogy egy kicsit bőbeszédű. Ha szeretné használni nézetmotorjainkat, akkor változtassa meg Globálisát.asax fájl a következőképpen néz ki.

Itt Van. Kód! Kód! Kód!

ha többet szeretne megtudni arról, hogyan és mi történik az útvonalak regisztrációja során, olvassa tovább.

RouteSet

ebben a részben megtudhatja RouteSet. Az osztály kritikus fontosságú a Restful Routing munkához.

alapok

a RouteSet útvonal-leképezések gyűjteménye. Ez nem csak meghatározza útvonalakat az alkalmazás, de tud csatlakozni más RouteSets, ami egy gazdag útvonalak minimális erőfeszítéssel.

az összes útvonal a Útvonalkészlet Map módszerén belül van meghatározva.

az Imapper példány átkerült a térkép bemutatja a módját, hogy feltérképezze az útvonalakat a RouteTable szótár középpontjában minden ASP.Net MVC alkalmazás. Ha telepítette Restful Routing keresztül Nuget, akkor észre RouteSet már létrehozott az Ön számára.

Csatlakozás

néha logikusan szeretné elválasztani az Útvonalkészleteit. Ahelyett, hogy az összes útvonalat egyetlen Útvonalkészletbe csoportosítanánk, lehetőséget biztosítunk az Útvonalkészletek összekapcsolására. Ki kell választania egy RoutSet, hogy a gyökere a RouteSets, ami után lehet csatlakozni más RouteSets bármilyen módon szeretné. A routesetek a területekhez hasonló névtereket is támogatnak.

konfiguráció (opcionális)

az Útvonalkészlet olyan beállításokat biztosít, amelyek módosíthatják az útvonalregisztráció viselkedését. Ezek a tulajdonságok egy RouteSet összefüggésében találhatók. A legtöbb fejlesztő nem akarja megérinteni ezeket a funkciókat.

Beállítás alapértelmezett eredmény
LowercaseUrls true URL-ek regisztrálása kisbetűs invariáns kultúrában
kisbetűs defaults true regisztrálja műveleteit, ha általában kisbetűs invariáns kultúrában van regisztrálva
kisbetűs műveletek true regisztrálja a műveleteit, ha az útvonal kisbetűs invariáns kultúrában van regisztrálva
MapDelete false regisztráció a Törlés további műveletei . Az erőforrás eltávolítása előtt egy törlési megerősítő oldal megjelenítésére szolgál.

Mapping

a Restful Routing egy leképezési keretrendszer, és a leképezéshez egy sor koncepciót és interfészt biztosítunk. Az alábbiakban olvashat az egyes felületekről, valamint arról, hogy az egyes funkciók milyen részleteket nyújtanak.

Root

map.Root<HomeController>(x => x.Index());

minden alkalmazásnak szüksége van egy alapértelmezett oldalra, és a root elérési út regisztrálása még soha nem volt ilyen egyszerű. Ha az alkalmazás házigazdája , akkor ez tekinthető a gyökér.

az alkalmazásnak csak egy gyökere lehet.

erőforrás

map.Resource<ProfileController>();

az erőforrás olyan “dolog”, amelyre az alkalmazás felhasználójának szemszögéből külön-külön lehet gondolni. A Hitelesített felhasználó profilja jó példa az erőforrásra. Vessen egy pillantást a következő url-re. Amikor egy profilról van szó, az azonosítót egy cookie-n keresztül (vagy más implicit módon) származtatja, és nincs szüksége az azonosítóra az útvonal útvonalában.

az url feltételezi, hogy az alkalmazás tudja, mi a profil, és hogyan kell bemutatni. Hogyan nézne ki a regisztráció egy Útvonalkészletben?

műveletek és Http-módszerek

egy erőforrás regisztrálásakor automatikusan egy sor művelet és módszer kerül regisztrálásra. Regisztrálja a vezérlőt, és hajtsa végre a műveleteket.

művelet HTTP módszer
megjelenítés kap
létrehozás hozzászólás
új kap
szerkesztés GET
frissítés fel
megsemmisítés törlés

a ProfileController példánkhoz a következő kimenetet kapnánk:

művelet HTTP módszer eredmény (vezérlő # művelet) Url
SHOW GET profil#show / profil
új GET profil # új / profil/új
létrehozás bejegyzés profil#létrehozás / profil
EDIT GET profil # edit /profil / edit
frissítés PUT profil # frissítés / profil
elpusztítani törölni profil # elpusztítani / profil

elnevezése

néha nevet a vezérlő egy dolog, de szeretné, hogy az erőforrás url tükrözik valami teljesen más. Ez egyszerű.

a profile#show új url-je

Additionally, you can change the default action names of a resource by using the PathNames metódusra változik. Ez nem ajánlott, de szeretnénk lehetőségeket adni.

Műveletek kiválasztása

néha előfordulhat, hogy nincs szüksége az erőforráshoz biztosított összes módszerre. Képzelje el a következő példákat:

  • felhasználóként nem tudok profilt létrehozni, mert implicit módon jön létre, amikor regisztráltunk.
  • felhasználóként képesnek kell lennem az aktuális profilom szerkesztésére.
  • felhasználóként nem tudom törölni a profilomat.
  • felhasználóként látnom kell a profilomat

felülvizsgálat után csak a következő műveleteket kell regisztrálnunk: Show, Edit, Update. Ahhoz, hogy erőforrásainkat ezekre a műveletekre korlátozzuk, a következő kódot használjuk az Útvonalkészletünkben.

erőforrás beágyazása

// NESTING A RESOURCEmap.Resource<ProfileController>(profile => { profile.Resource<CreditCardController>()});

az erőforrás néha más erőforrástól függ. Egy erőforrás beágyazásakor egy – egy kapcsolat van a szülő erőforrás és a függő erőforrás között.

ha létrehoz egy creditcard erőforrást, és beágyazza azt a profile erőforrásunkba (amint az a jobb oldalon látható), akkor megkapja a kapott útvonalakat, kivéve a profil útvonalakat:

Action HTTP Method Result (controller#action) Url Template
SHOW GET creditcard#show /profile/creditcard
NEW GET creditcard#new /profile/creditcard/new
CREATE POST creditcard#create /profile/creditcard
EDIT GET creditcard#edit /profile/creditcard/edit
frissítés PUT hitelkártya # frissítés / profil/hitelkártya
elpusztítani törölni hitelkártya # elpusztítani / profil/hitelkártya

erőforrások

map.Resources<ProductsController>();

az erőforrások a tartományon belüli gyűjteményeket képviselik. Képzelje el, hogy épít egy Áruház alkalmazást, érdemes feltárni a katalógust, hogy az ügyfelek kereshessenek és vásárolhassanak termékeket. A termékeket erőforrásoknak tekintik. A generált url azt is tükrözi,hogy sok termék kínálható.

vegye figyelembe a termékek pluralizációját. Ha e-kereskedelmi webhelyet indít, akkor valószínűleg egyszerre több terméket is elad.

műveletek

az erőforrások regisztrálásakor automatikusan egy sor művelet és módszer kerül regisztrálásra. Regisztrálja a vezérlőt, és hajtsa végre a műveleteket.

művelet HTTP módszer
INDEX GET
megjelenítés kap
létrehozás hozzászólás
új kap
szerkesztés GET
frissítés fel
megsemmisítés törlés

a ProductsController példánkhoz a következő kimenetet kapnánk:

elnevezés

néha megnevez egy dolgot a vezérlőnek, de szeretné, ha az erőforrások url-je valami teljesen mást tükrözne. Ez egyszerű.

a termékek#index új url-je megváltozik.

ezenkívül megváltoztathatja az erőforrás alapértelmezett műveletneveit a PathNames módszerrel. Ez nem ajánlott, de szeretnénk lehetőségeket adni.

a {id} paraméter testreszabása

alapértelmezés szerint a id nevet használja az erőforrás-azonosító paraméterhez az útvonal URL-mintáiban. Például a#show action in Actions és HTTP metódusok fenti termékeinek URL-mintája /products/{id}.

egyes esetekben érdemes lehet más nevet használni a paraméterhez. Lehet, hogy azt szeretné, hogy a paraméter neve megegyezzen az erőforrás azonosításához használt tulajdonság nevével:

a#show művelethez hozzáadott útvonal URL-mintája /users/{username}lenne.

Műveletek kiválasztása

néha előfordulhat, hogy nincs szüksége az összes általunk biztosított módszerre. A műveleteket a jobb oldali follwing módszerekkel távolíthatja el.

beágyazott erőforrások

map.Resources<ProductsController>(products => { products.Resources<ReviewsController>()});

az erőforrások néha más erőforrásoktól függenek. Az erőforrások beágyazásakor egy a sokhoz kapcsolat van a szülő erőforrás és a függő erőforrások között. Gondolj egy olyan termékre, amely reviews.To ehhez regisztrálja a két erőforrást.

tag és gyűjtési útvonalak

használja az erőforrásokon belüli Member és Collection módszereket útvonalak hozzáadásához a gyűjteményhez (azonosító útvonal paraméter nélkül) vagy a taghoz (azonosító útvonal paraméterrel). A térképhez rendelkezésre álló módszerek: Get, Post, Put, Delete és Head. Ha egy erőforrás (egyes szám) kontextusában van, akkor csak a Member metódushoz férhet hozzá.

normál térképezés

<!-- IN RAZOR VIEW --><a class="btn" href="@Url.Action("usingpath", "extras")">Path</a><a class="btn" href="@Url.Action("usingroute", "extras")">Route</a>

néha a konvencióink egyszerűen nem működnek az Ön számára. Lehet, hogy nagyképűek vagyunk, de nem vasököllel uralkodunk.

két további módszer áll rendelkezésre, így egyéni útvonalakat adhat hozzá: az útvonal a hagyományos ASP.Net MVC routing szintaxis a mi interfész wrapper. Az útvonal az egyéni útvonal hozzáadásának nagyon hagyományos módja.

területek

a területeket a névtér kezeli a Restful Útválasztásban. Általában összefüggés van a mappák és a névterek között, így a legtöbb fejlesztő számára ez nem nagy különbség ahhoz képest, amit már csinálnak.

a terület módszerhez megadott vezérlő a csoportosított vezérlők névterének meghatározására szolgál. A” leképezések ” karakterlánc a terület nevének meghatározására szolgál, az url-rész mellett.

ne feledje, hogy URL-ek létrehozásakor meg kell adnia a területet. Egy területből való kilépéshez beállíthatja a területet egy üres karakterláncra. Az erőforrásokkal és erőforrásokkal kapcsolatos szabályok továbbra is érvényesek a területek kezelésére.

Nézetmotorok

a Restful Routing két nézetmotorral rendelkezik: RestfulRoutingRazorViewEngine és RestfulRoutingWebFormViewEngine. Nézzük meg az egyik ilyen nézet motorok.

ezek a nézetmotorok megváltoztatják a ASP.Net az MVC nézeteket fog keresni.

formázási eredmény

ez egy olyan funkció, amely lehetővé teszi az implicit formátumbővítmények használatát egy erőforráson és erőforrásokon. Ennek a szolgáltatásnak két alapvető módja van: válasz, Formatroutes.

<system.webServer> <modules runAllManagedModulesForAllRequests="true" /></system.webServer>
namespace RestfulRouting.Documentation.Controllers{ public abstract class ApplicationController : Controller { protected ActionResult RespondTo(Action<FormatCollection> format) { return new FormatResult(format); } }}
// IN ROUTESET// enable format routesextras.WithFormatRoutes();

mi egy sor ismert típusok ki a dobozból, hogy a mi fluent felület egy kicsit szebb, de támogatjuk a fájl kiterjesztését lehet gondolni. Ezen formátumútvonalak létrehozásához csak adja meg a formátumot az alábbiak szerint.

félelmetes ugye?! Javasoljuk, hogy olvassa el a Quirks / Gotchas következő szakaszát, ha formátumútvonalakat tervez használni.ő hasznos, ha az épület egyoldalas alkalmazások használata takarékosan és megérteni, ha helyénvaló, hogy külön funkciót a tevékenységét.

Holt linkek átirányítása

vannak idők, amikor jobb url-döntéseket hozunk, mint mások. Szeretnénk az URL-ek megváltoztatásának képességét a meglévő URL-ek megszakítása nélkül. Erre csak akkor van szükség, ha az alkalmazás életbe lép. Ez leginkább a nyilvános oldalakra vonatkozik, de hasznos lehet egy intranetes helyzetben.

az első dolog megjegyezni, hogy regisztrálnia kell az összes átirányítási útvonalat a lista utolsó útvonalaként. Ez azért van, mert ezek a legkevésbé fontosak. Az csak akkor érhető el, ha egy régi linket ér el. Az alkalmazás nem generálja ezeket az URL-eket, és ha igen, akkor problémái vannak.

másodszor, a regisztráció úgy néz ki, mint a RestfulRouting régi jó szintaxisa, de nem követeli meg, hogy bármilyen definícióba beágyazza. Azt recommed, ami egy RouteSet úgynevezett DeadLinks vagy átirányítások és összekötő végén a mester RouteSet.

Végül, és ez fontos, regisztrálja a RedirectRouteFilterAttribte-t globális szűrőként.

mint látható a jobb oldalon, csak be kell állítania a régi url-t, és meg kell adnia az új url feloldásához szükséges értékeket. A takarók alatt található UrlHelper segítségével megtaláljuk a legmegfelelőbb útvonalat.

Route Debugger

// IN ROUTESETmap.DebugRoute("routedebug");

Restful Routing jön egy erős útvonal debugger célja, hogy segítsen megérteni az útvonal leképezések. Engedélyezheti vagy letilthatja az útvonal hibakeresőt pusztán azáltal, hogy hozzáadja a következő sort az Útvonalkészlethez.

Quirks / Gotchas

ez a szakasz megkísérli részletezni néhány quirks ASP.NET MVC és Restful Routing. Ezek néha problémákat okozhatnak, és jó megérteni, hogy miért és mikor befolyásolhatják az alkalmazást.

állandó Útvonalértékek

ASP.Net az MVC mindig megpróbál segíteni. Hasznos, bár jó szándékú, néha furcsa viselkedéshez vezethet. A legnagyobb probléma lehet menteni útvonal értékeket a meglévő kérelmet.

ennek a furcsaságnak a megértése segíthet sok probléma hibakeresésében, nem csak a Restful Routing segítségével, hanem ASP.NET MVC általában. A példát jobbra láthatja.

keverési leképezési szintek

map.Resource<ProfileController>(profile => { // DOH! should be profile // not map! // EXCEPTION!!!! map.Resource<CreditCardController>()});

a Restful útválasztást úgy tervezték, hogy folyékonyan és egymásba ágyazva legyen. A RouteSet létrehozása során véletlenül rossz paramétert hívhat meg, ami olyan hibához vezethet, amelyet nehéz diagnosztizálni. Kivételünk hasznos, de ez elég gyakori hiba, hogy úgy döntöttünk, hogy dokumentáljuk.

névterek és Névütközések

néha a vezérlőket ugyanolyannak szeretnénk nevezni, de különböző névterekben vannak. Ez akkor megfelelő, ha a webhely adminisztratív és elülső részét építi. Ne felejtse el megfelelően beállítani a névtereket, hogy az Útválasztás példányosítsa a megfelelő vezérlőt.