HTTP request a response – získání v presenteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
horakmar
Člen | 16
+
0
-

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
+
+2
-

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
+
0
-

EDIT: a vlastne httpRequest a httpResponse si muzes vzit primo na presenteru: https://api.nette.org/…esenter.html#…

Super, funguje, děkuji.