46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
# Pano — Kanban görev panosu
|
|||
|
|
|
||
|
|

|
||
|
|
|
||
|
|
Sunucusu **KabaLang** ile yazılmış bir Kanban panosu: görevler *Yapılacak · Sürüyor · Bitti*
|
||
|
|
sütunlarında, kartlar sürükle-bırak ile taşınır, her değişiklik SQLite'a yazılır.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd web/pano
|
||
|
|
kabalang calistir pano.kbl
|
||
|
|
# → http://127.0.0.1:8471
|
||
|
|
```
|
||
|
|
|
||
|
|
## Neyi gösteriyor
|
||
|
|
|
||
|
|
| Konu | Nerede |
|
||
|
|
|---|---|
|
||
|
|
| `kaba.web` ile JSON REST API — `al` · `gonder` · `guncelle` · `kaldir` | `pano.kbl` sonu |
|
||
|
|
| Yol parametresi `/api/gorevler/{id}` | `guncelle`, `kaldir` |
|
||
|
|
| `kaba.veritabani` — **her sorgu parametre bağlamalı** (`?`) | tüm `veritabani.sqlite(..., [..])` çağrıları |
|
||
|
|
| Gelen JSON'u `json.gecerli_mi` + `json.al` ile okumak | `olustur` |
|
||
|
|
| Durum kodlu yanıtlar: 201 · 204 · 400 · 404 · 422 | `hata_json`, `web.json(g, 201)` |
|
||
|
|
| Sunucunun kendi hatalarının da JSON olması (405, 413) | `sunucu.hatalar_json()` |
|
||
|
|
| Kapalı küme denetimi (`SUTUNLAR.icerir(sutun)`) | `olustur`, `guncelle` |
|
||
|
|
|
||
|
|
## API
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl http://127.0.0.1:8471/api/gorevler
|
||
|
|
curl -X POST -d '{"baslik":"Yeni iş","oncelik":"yuksek"}' http://127.0.0.1:8471/api/gorevler
|
||
|
|
curl -X PUT -d '{"sutun":"bitti"}' http://127.0.0.1:8471/api/gorevler/3
|
||
|
|
curl -X DELETE http://127.0.0.1:8471/api/gorevler/3
|
||
|
|
```
|
||
|
|
|
||
|
|
## Güvenlik
|
||
|
|
|
||
|
|
- **SQL enjeksiyonu:** kullanıcı verisi sorguya hiçbir zaman metin olarak eklenmez, `?` ile
|
||
|
|
bağlanır. `"x'); DROP TABLE gorev; --"` başlıklı bir görev yalnızca tuhaf adlı bir görevdir.
|
||
|
|
- **XSS:** ön yüz kart içeriğini `textContent` ile basar; `<script>` başlıklı bir görev ekranda
|
||
|
|
düz yazı olarak görünür.
|
||
|
|
- Sunucu yalnız `127.0.0.1`'i dinler ve tek iş parçacığıyla çalışır (SQLite'a sırayla yazılır).
|
||
|
|
|
||
|
|
Veritabanı yolu `PANO_DB` ortam değişkeniyle değiştirilebilir (varsayılan `pano.db`).
|
||
|
|
|
||
|
|

|