Implementace REST API pomocí Drahak/Restful
- Shampoo
- Člen | 38
Ahoj,
programoval jsem mobilní aplikaci, která by měla umět zaslat požadavek o synchronizaci DB z webové aplikace, která běží na Nette.
V současné době se snažím rozchodit vůbec REST api v Nette. Našel jsem si hotové řešení Drahak/Restful, nicméně mám problém hned z počátku.
Řekněme, že jsem vytvořil adresářovou strukturu pro modul
„RestApiModule“, kde mám presenter SyncPresenter.
Mám tedy nadefinované routy, které můžu testovat na localhostu:
- GET localhost/sync/all
- POST localhost/sync/createSample
- PUT localhost/sync/updateSample
- DELETE localhost/sync/deleteSample
Tyto akce zatím slouží jen pro debug, abych zjistil, zda mi vůbec API
funguje.
Routy se generují automaticky, viz. můj config.neon
Prvně bych se chtěl zeptat, jak se projeví vygenerovaná routa, kdybych v config.neon nastavil prefix např. „sync“ – v dokumentaci to nemůžu vůbec najít.
Dále mám právě problém se samotným fungováním API. K testování
používám Chrome rozšíření: Rest
Console Pokud zadám jakýkoliv request, např. http://localhost/…createSample (zvolím metodu POST), tak
Nette vrátí error 404 s message „Cannot load presenter
‚RestApi:Sync‘, class ‚App\RestApiModule\Presenters\SyncPresenter‘ was
not found.“
Presenter na konkrétní URL existuje.
Může mi někdo zaslat nějaký tutoriál, kde se řeší REST API v Nette
(jakékoliv rozšíření), nebo poradit, kde může být problém?
Moc díky, budu rád za jakoukoliv radu.
- David Matějka
- Moderator | 6445
Bud ten presenter presun do namespace, kde ho nette ocekava dle nastaveneho mappingu, nebo si pridej mapping vlastni, konkretne pod ten v neonu:
RestApi: RestApiModule\*Presenter
- Shampoo
- Člen | 38
David Matějka napsal(a):
Bud ten presenter presun do namespace, kde ho nette ocekava dle nastaveneho mappingu, nebo si pridej mapping vlastni, konkretne pod ten v neonu:
RestApi: RestApiModule\*Presenter
Přidal jsem tam ten mapping, nicméně ten defaultní by měl ten přidaný obsáhnout. Stále to ale nevyřešilo problém.
Poznatek: Když zkusím použít při stejné URL jinou request metodu, tak mi Drahak vyhodí exception, že při této routě není tato metoda dostupná a vypíše, jakou metodu mám pro danou routu v anotaci. Čili, Nette ten presenter vidí, ale jakmile požádám správnou metodou, tak dělá, jako kdyby tam nebyl. Nechápu.
Editoval Shampoo (8. 6. 2015 18:13)