Files
WebWizard/docs/prompts/step03.md
2026-06-12 12:54:10 +02:00

68 lines
2.4 KiB
Markdown

# Krok 03 - API vrstva a Error Handling
## Kontext projektu
Frontend komunikuje s backendom výhradne cez jeden endpoint `ajax.php` pomocou POST požiadaviek s JSON payloadom.
## Pred implementáciou si preštuduj
- `docs/architecture.md` - Sekcia 9 (AJAX API).
## Cieľ
Vytvoriť základný API router `public/ajax.php` a implementovať jednotný systém pre spracovanie chýb a formátovanie odpovedí.
## Požadované zmeny
1. Vytvorenie súboru `public/ajax.php`.
2. Implementácia logiky pre:
- Načítanie JSON vstupu z `php://input`.
- Overenie prítomnosti hlavičky `X-User-ID`.
- Základný router (switch podľa poľa `action`).
- Jednotný formát úspešnej odpovede: `{"success": true, "data": {...}}`.
- Jednotný formát chybovej odpovede: `{"success": false, "error": {"code": "...", "message": "..."}}`.
3. Globálny `try-catch` blok na zachytávanie výnimiek a ich transformáciu do JSON odpovede.
4. Nastavenie správnych HTTP hlavičiek (`Content-Type: application/json`).
## Implementačné pravidlá
- Nepoužívaj frameworky pre routing.
- Každá odpoveď musí mať nastavený status kód (typicky 200 pre aplikačné chyby v JSONe, alebo 4xx/5xx pri systémových chybách).
- Zabezpeč, aby PHP warningy a errory neboli vypisované priamo do výstupu (použi `display_errors = 0` v produkčnom nastavení a vlastný error handler).
## Súbory ktoré je potrebné vytvoriť
- `public/ajax.php`
## Súbory ktoré je potrebné upraviť
Žiadne.
## API a dátové štruktúry
Vstupné dáta (JSON):
```json
{
"action": "string",
"project_id": "string",
"payload": {}
}
```
## Frontend požiadavky
Nerelevantné (v tomto kroku len backend).
## Backend požiadavky
- PHP 8.2.
## Testovací scenár
1. Pošli POST požiadavku na `ajax.php` s prázdnym telom. Mal by si dostať JSON chybu.
2. Pošli POST požiadavku s neexistujúcou akciou. Mal by si dostať JSON chybu `UNKNOWN_ACTION`.
3. Pošli validnú požiadavku (zatiaľ môžeš implementovať akciu `ping`) a over formát `success: true`.
## Definition of Done
- `ajax.php` funguje ako centrálny router.
- Odpovede majú jednotnú štruktúru.
- Chybové stavy sú ošetrené a vracajú JSON.
## Obmedzenia
- Žiadne HTML vo výstupe z `ajax.php`.
## Výstup
- zoznam vytvorených súborov
- zoznam upravených súborov
- stručné zhrnutie vykonaných zmien
- prípadné otvorené problémy