Nové API existující aplikace
- PJK
- Člen | 70
Zdravím, mám dotaz na zkušenější Nettisty. Mám běžící aplikaci postavenou na Nette a Doctrine 2. Představa frontendáře je taková, že postupně přejdeme na übertrendy tlustého klienta v prohlížeči. Potřebuji tedy na aplikaci napasovat další rozhraní, tj. JSON API. Komplet, nic jako snippety, regulérní API se vším všudy. Chvílí pak obě verze poběží vedle sebe a pak se původní verze vypne a z mého pohledu z aplikace zbude jen API server.
Mám následující otázky:
- Metody API se budou dost podobat současným akcím presenterů. Je realistické, že by stačila výměna view? Jak generujete JSON výstupy vy?
- Máte zkušenosti s tímto psaním interního AJAX API existujících aplikací? Jaké?
- Má cenu držet se Nette, nebo mám použít třeba jen routy, model a cache a dostavět si to sám?
Podělte se prosím o své zkušenosti a postřehy. Díky!
- norbe
- Backer | 405
- Můžeš využít
JsonResponse
:
$this->sendResponse(new JsonResponse($data));
- Teprv se na něco takového chystám až bude čas, takže moc neporadím. Pár postřehů můžeš najít v tématu o ExtJs zde na fóru.
- Jan Tvrdík
- Nette guru | 2595
Napiš si vlastní implementaci IPresenter
. Je zbytečné
používat tak velkou třídu jako je Presenter
, když nehodláš
použít jedinou komponentu.
- Filip Procházka
- Moderator | 4668
Napadlo mě, že by mohlo být zajímavé, udělat kompilátor
.latte
→ .js
a posílat šablony klientovi, někam
si je třeba kešovat a pak posílat JSONem data, co předáváš šabloně
public function sendTemplate()
{
// přibalím šablony
$this->payload->templates = $this->template->packToJSON();
// přibalím předané data
$this->payload->templateParams = $this->template->getParams();
// odešlu
$this->sendPayload();
}
Kdyby se odesílaly jenom třeba nějaké odkazy a měl by jsi router, který
by poskytoval pouze šablony, dalo by se to parádně kešovat u klienta.
Samozřejmě by nesmělo být v šablonách žádné {? }
apod :)
- PJK
- Člen | 70
Kdyby se odesílaly jenom třeba nějaké odkazy a měl by jsi router, který by poskytoval pouze šablony, dalo by se to parádně kešovat u klienta. Samozřejmě by nesmělo být v šablonách žádné
{? }
apod :)
To jsme se asi nepochopili, já budu odesílat jenom data v JSONu :). Všechno ostatní se bude distribuovat z CDN. Je to prakticky přesun view ke klientovi (+ změna view enginu).
- Filip Procházka
- Moderator | 4668
Noo tak nějak jsem to myslel s tím routerem, jenom jsem se špatně vyjádřil :) ten router na šablony měl být to tvoje CDN :)