Docsの目次

Nagi Tasks JSON API

English

NagiとSQLiteで動く、タスク管理JSON APIの例です。作成・編集・完了・削除、集計を備えています。HTTP routeは標準APIで明示登録し、それぞれpublic policyを指定しています。ブラウザーUIと認証は含みません。

このページの目次

起動

リポジトリのルートで実行します。

cargo build --release --locked -p nagic
.\target\release\nagic.exe run --project test-nagi-code/web-demo

既定のURLはhttp://127.0.0.1:8091です。NAGI_PORTでportを、NAGI_DBでDB pathを変えられます。プロジェクトとして起動すると、既定でtest-nagi-code/web-demo/nagi-tasks.sqliteを使い、再起動後も保存内容を読みます。既存DBを引き継ぐ場合はNAGI_DBに絶対pathを指定してください。

GET /はJSON APIの案内をplain textで返します。以前のraw HTML UIは標準HTTP routeから配信しません。index.htmlは未接続の旧UI資料です。Nagi 0.2.0にはtyped HTML subsetがありますが、この例のbrowser UIは移行していません。HTML markupをplain text responseとして扱わず、APIはJSONのまま提供します。

Windows x64の配布用exeを作る場合:

.\scripts\build_windows_demo.ps1 -Source test-nagi-code/web-demo/tasks.nagi
.\build\distribution\nagi-tasks.exe

依存がキャッシュ済みなら-Offlineを付けられます。配布exeとSQLite・VC++ runtimeの構成はbuild scriptを参照してください。実行後の保存データは別のSQLite fileになります。停止はターミナルでCtrl+Cを押してください。

API

メソッド・path 内容
GET /health okを返す明示public route
GET /api/tasks 最新100件を一覧
GET /api/tasks/{id} 1件取得
POST /api/tasks {"title":"やること","done":false}を登録
PUT /api/tasks/{id} titleとdoneを置換
DELETE /api/tasks/{id} 削除し、削除件数を返す
GET /api/stats 全件の件数と完了件数

タイトルはUTF-8で1〜240 byteです。SQLite tableにも制約があります。認証、browser UI、taskの優先度や期限は含みません。

コードを読む

ファイル 内容
nagi.toml CLIとVS Codeで共通の入口
tasks.nagi 標準HTTP App、public policy付きroute、HTTP handler
models.nagi JSONとDBの型
validation.nagi 入力検証
index.html typed HTML subsetへ未移行の旧UI資料

起動済みのserverを確認

python test-nagi-code/web-demo/smoke_api.py --base-url http://127.0.0.1:8091

PythonはHTTP request/responseの照合だけを行います。自分で登録したtest dataをAPI経由で削除し、既存のtaskを残します。serverの起動・停止やDB fileの操作は行いません。

Nagi 0.2.0 · Docsこのページのソース