Nette a Guzzle Middleware
- MartinVolenec
- Člen | 36
Dobrý den,
řeším projekt, kde komunikuji s API. A při určité odpovědi s určitým HTTP Code a obsahem v Body potřebuji vše ukončit a provést redirect na přihlašovací stránku. A napadlo mě to samozřejmě filtrovat v objektech Middleware.
Jelikož pro vše používám knihovnu Guzzle tak jsem si studoval i jak fungují.
Middleware vytvářím jako objekty s metodou __invoke(). To vše funguje. Jak pro request tak i response:
Nyní bych ale potřeboval, aby Middleware Response zkontroloval a za
určité podmínky provedl redirect.
Má někdo zkušenosti co s tím?
Jelikož já nemám, tak mě ze zoufalosti napadla následující
šílenost:
Aby Middleware dědil z UI\Control → může si potom zavolat za určité IF
podmínky Presenter a redirect.
Ale toto se Nette nelíbí.
Jsem rád za každou pomoc. Nebo jestli někdo zná efektivnější
přístup, rád se poučím.
Děkuji
- MartinVolenec
- Člen | 36
Ano, přes výjimku to funguje.
Nicméně mě napadl jiný způsob bez nutnosti použití Middlewaru.
I tak děkuji za pomoc.
- MartinVolenec
- Člen | 36
@CZechBoY S API jsem nikdy takto nepracoval, takže chyběly zkušenosti. Původně jsem se snažil nahradit modely za jakési Requestery. Ale později tento návrh vůbec nevyhovoval. Často krát bylo potřeba provést redirecty a další věci, který se krásně řeší v presenterech.
Nakonec mi došlo, proč tuto funkcionalitu nevložit přímo do presenterů. Takže v rámci BasePresenteru jsem si vytvořil:
a tu pak upravuji dle potřeby v ostatních presenterech. Je zde pěkné, že se dá napsat jedna implementace funkce a některé presentery si ji mohou přepsat dle potřeby aniž by to ovlivnilo něco jiného.
Možná pro někoho běžný návrh či praxe, ale pro mě novinka. A funguje opravdu dobře.