Jak vytvořím REST API v nette

RomanP
Člen | 2
+
0
-

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

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

@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. :)

RomanP
Člen | 2
+
0
-

Ahoj,

moc díky za odpovědi. Špatně jsem to popsal a asi v tom nemám úplně jasno.
Ještě jsem se k tomu ani nestihl dostat, ale v podstatě si myslím, že mě jen stačí zavolat GET request s tou adresou a tyto data pak poslat šabloně, když z nich chci číst. Chápu to dobře?

Mysteria
Člen | 797
+
0
-

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

Š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