[OGF] Routing stratégia
Sziasztok!
Megint egy OGF-fel kapcsolatos kérdés, ezúttal a routing stratégia kapcsán.
Az alapvető koncepció az, hogy a kurrens regexp- és prefix match stratégiákkal ellentétben a rendszer által feltérképezett címek fastruktúrába rendeződjenek, tehát a / jelek mentén elválasztva és visszalépkedve mindig értelmes címeket kapjunk.
A megálmodott config fájlom így néz ki: link
Az egyes elemek osztályoknak felelnek meg, a mapping pedig a mellékelt elements.xml fájlban kerül leírásra.
Kérdés: hogyan valósítanátok meg egy ilyen relatíve szigorú routingot úgy, hogy a fejlesztőnek mégis triviális legyen routing szabályokat írni?
János
■ Megint egy OGF-fel kapcsolatos kérdés, ezúttal a routing stratégia kapcsán.
Az alapvető koncepció az, hogy a kurrens regexp- és prefix match stratégiákkal ellentétben a rendszer által feltérképezett címek fastruktúrába rendeződjenek, tehát a / jelek mentén elválasztva és visszalépkedve mindig értelmes címeket kapjunk.
A megálmodott config fájlom így néz ki: link
Az egyes elemek osztályoknak felelnek meg, a mapping pedig a mellékelt elements.xml fájlban kerül leírásra.
Kérdés: hogyan valósítanátok meg egy ilyen relatíve szigorú routingot úgy, hogy a fejlesztőnek mégis triviális legyen routing szabályokat írni?
János
Lehet, hogy sehogy
- Amit configban megvalósítasz, Apache esetén ezt szoktuk .htaccess-ben, Nginx esetén is van megfelelője, lehet valamilyen tudatlanságom okozza, hogy nem értem ezt miért is a fw-re hagyományozod. Vagy mi dolgozza fel? Én valószínű a kiszolgálóra bíznám, mielőtt a fw elindulna.
- Az elements.xml-ben pofonegyszerű megfeleltetést írni, itt viszont nincsen szabály, ha jól látom. Csak egy paraméter van, ami ha létezik, adott controller jön.
Azt hiszem nekem ez a szisztéma nagyon nem jelentene "triviális routing szabály írást". Nem látom át az értelmét. Ami nekem pl. triviális:
A másik amit nem értek: ha van az oldalon SSL, akkor miért nem mindig? Miért csak login esetén kötelező?
Az sem egészen tiszta, hogy miért pont így veszed kétfelé. A domaines dolgok .htaccess-be "valók", de az SSL is, a többi meg a példához hasonlóan, egy helyen, minimális szabályokkal - szerintem.
Ha jobban elmagyarázod a miértet, lehet, hogy egész más véleményen leszek...
OGF
Ami az SSL-es, illetve hostname-s dolgot illeti, azért van a webapp configjában, mert én sokat dolgozom olyan projekteken, amik komplex szabályrendszerekkel rendelkeznek és ezeket kirakni webszerverre csökkentené az átláthatóságot. A bemutatott config természetesen csak sample config, azt demonstrálja, hogy mi mindent lehet vele megcsinálni.
Amiért nem szeretem a sima egyszerű route listát, az az, hogy sokan "abuzálják" az URL-eket mindenféle random dolgok tárolására és ezt szeretném picit visszaterelni a fastruktúra elvre. Ugyanez a routing építene a későbbiekben pl. breadcrumb trailt. (A létező legborzalmasabb routing megoldás amit valaha láttam a ZF1-ben volt egyébként.)
Hát használj olyasmit, ami
Öröklődési hierarchia :)
Kezicsokolom
Azt látom, hogy XML-ben van,
Pedig
Ez a példából nemigen derül
/users/view/(id:int)
) és mellékelnék valami toolt, ami elemzi a konfigurációt és jelzi a potenciális problémákat, és az szólhatna, ha egy szülő útvonal nincs lekezelve. A fő problémának mindenesetre azt látom, hogy túl sokmindent próbálsz egy konfigfájlba bezsúfolni - az auth és redirekt szabályokat nem venném ide, azt csinálja a kontroller vagy a webszerver (utóbbi nehezebben áttekinthető, viszont hatékonyabb), vagy legyenek külön fájlban nevesített redir/auth szabályok, amiket csak behivatkozol a leafből. A séma is mehet az authhoz, és akkor a maradék már sokkal olvashatóbb lesz.Kodkieg
Mit lehet kódkiegészíteni
$routes['/users/view/(id:int)'] = 'UserController::viewAction';
? Egyébként is, az XML kódkiegészítésnek szerintem nincs túl sok haszna, mert nem lehet dokumentációt csatolni a DTD-hez. Akkor már inkább egy fluid interfész:Nem rossz!
Megnyugodtam :)
Hát, másképp gondolkodunk és / vagy mások az ügyfeleink-magunk igénye.
A fastruktúra irány jogos, de én mégis összehoznám valahogy a kettőt (szabályok és lista) egybe, nem is feltétlenül XML-ben. De mint mondtam - másképp gondolkodunk, és én egyelőre nem is gondolkodom saját fw írásán, inkább alakítgatom kedvemre a kedvencem.
Így sajnos nemigazán tudtam segíteni.
Nekem kicsit
Egy ilyet hogyan írnál le a config fájloddal: SLIM Route Groups ?
Végülis nagyjából mindegy szerintem, hogy mi van az xml-ben, ha csinálsz hozzá egy editort, amivel generáltatni lehet...
Tipikusan nem kézzel írt konfig fájl a legjobb megoldás erre, hanem annotációk használata, amik alapján lehet konfig fájlt generáltatni. Ha mégis kézzel szerkesztett konfig fájl mellett döntesz, akkor szerintem csináld a lehető legegyszerűbbre, legtömörebbre, pl nálam kb így néz ki egy config egy rest service darabhoz:
A config fájlba kiemelést nem tartom szerencsés dolognak, akkor látom értelmét, ha valamilyen alkalmazással akarom generáltatni a config fájlt.