Jak vytvořím REST API v nette
- RomanP
- Člen | 2
Ahoj,
chci vytvořit v nette jednoduché REST API. Zkusil jsem použít api-router
https://ublaboo.org/api-router/
nastavil jsem si routu:
$router[] = new ApiRoute('/zamestnanci/api/users[/<id>]', 'Homepage', [
'parameters' => [
'id' => ['requirement' => '\d+', 'default' => 10]
],
'priority' => 1
]);
v presenteru mám pak akci
public function actionRead($id)
{
$employee = $this->employeeManager->getEmployee($id);
$employees = array(
'id' => $employee->employee_id,
'name' => $employee->name,
'surname' => $employee->surname
);
$this->sendJson($employees);
}
takže teď po zadání url /zamestnanci/api/users/id mám JSON se
zaměstnancem.
Nevím ale jak docílit vypsání (místo toho JSON) zaměstnance nebo všech
zaměstnanců v šabloně.
Jsem začátečník, díky za každou radu.
- Felix
- Nette Core | 1247
Ahoj,
s api-routerem by ti pomohl @PavelJanda.
Pokud by jsi chtel pomoci s Apitte (https://contributte.org/apitte/), tak ti muzu pomoci treba ja.
Par ukazek je zde:
- Pavel Janda
- Člen | 977
@RomanP Možná ti pomůže ukázková implementace api-routeru: https://github.com/…uter-project
Jak to myslíš v šabloně? Pokud tě dobře chápu, chceš udělat REST api – to se úplně šablon natýká. Ale zkus popsat celou ptvojí představu o projektu, třeba ti dokážu pomoct. :)
- Mysteria
- Člen | 797
Osobně mě taky nedává smysl co vlastně chceš. Na jedné straně mluvíš o API a na druhé o šablonách a to dohromady nedává moc smysl.
Pokud chceš napsat aplikaci a používat Latte šablony, tak pro tohle žádné API nepotřebuješ, prostě vytáhneš data z databáze a předáš do šablony a vykreslíš.
Pokud bys chtěl dělat frontend třeba v Reactu, tak pak naopak musíš mít API, keré ti data vytáhne a pošle pravděpodobně ve formátu JSON. Pak si třeba z toho Reactu zavoláš routu, vrátí ti JSON s daty a v Reactu si je vykreslíš.
Kterou variantu tedy řešíš? :)
- Marek Bartoš
- Nette Blogger | 1280
Šablony pro rest api ve většině případů nepotřebuješ. Šablony se
řeší převážně jen pro html stránky, v případě api odesíláš jen
čistá strukturovaná data v json/xml/… Takže pro vracení dat voláš
$this->sendJson($data)
v případě nette presenteru a
return $response->withJsonBody($data)
v případě apitte
controlleru