HTTP request a response – získání v presenteru
- horakmar
- Člen | 16
Ahoj.
Píšu presenter, který přijme JSON data a vygeneruje nějakou ne-html
odpověď (ve finále to asi bude taky JSON, zatím mi stačí text/plain.
Protikus je Cčkový program a libcurl.
Následující úvaha je moje začátečnická a budu moc rád, když mi
napíšete, že to dělám blbě (a jak je to správně).
Abych se dostal k zaslaným datům, potřebuju
httpRequest->getRawBody()
. Dokumentace mi říká že:
HTTP požadavek, což je objekt třídy Nette\Http\Request, nevytváříme
přímo, ale získáme jako službu z DI kontejneru:
$httpRequest = $container->getByType('Nette\Http\Request');
Nojo, ale kde získám ten $container?
Podle dokumentace – závislosti jsem to udělal takto:
class ReaderPresenter extends BasePresenter {
/** @inject @var Nette\Http\Request */
public $httpRequest;
...
Funguje to, ale je to tak správně?
Totéž pro httpResponse, kde pro změnu potřebuji
nastavit setContentType('text/plain', 'UTF-8')
Díky za odpověď.
- David Matějka
- Moderator | 6445
Funguje to, ale je to tak správně?
ano, je to spravne. primo pres getByType by to nebylo spravne :)
a pro JSON odpoved pouzij JsonResponse, staci
$this->sendJson(array('foo' => $bar));
EDIT: a vlastne httpRequest a httpResponse si muzes vzit primo na presenteru: https://api.nette.org/…esenter.html#…
- horakmar
- Člen | 16
EDIT: a vlastne httpRequest a httpResponse si muzes vzit primo na presenteru: https://api.nette.org/…esenter.html#…
Super, funguje, děkuji.