本文へ移動

機能と制約

できること

  • GET / POST の JSON API を短いコードで登録する
  • Server から任意の HTTP method の API キーを登録する
  • API ハンドラーの戻り値を成功レスポンスとして直接返す
  • Express 5形式のルートパラメータを照合し、params として渡す
  • apiResponse() でHTTP statusとbodyを指定する
  • 同じ HTTP サーバーで静的ファイルを配信する
  • パス単位で WebSocket ハンドラーを登録する
  • 同じプロセスから API、ページ、WebSocket を提供する
  • Express middleware を追加する
  • Local URL と Network URL を表示する
  • LAN 向け QR コードを表示する
  • ポート競合時に別ポートを探索する
  • SIGINT / SIGTERM で HTTP と WebSocket を停止する
  • CLI テンプレートから用途別プロジェクトを作る

互換性方針

v1.x では公開 TypeScript API と文書化済みの通信仕様に破壊的変更を行いません。後方互換な追加と修正は行われる場合があります。次の破壊的変更は v2.0.0 で行います。

現在の制約

  • API 登録パス、WebSocket 登録パス、公開ファイルの URL パスでは、先頭セグメントが __tyoi から始まる名前を内部利用のために予約している。/__tyoi/__tyoi-status/__tyoi_assets/... などはアプリケーションから使用しない。API のベースが /api の場合、登録パス /__tyoi-status に対応する /api/__tyoi-status も予約対象になる
  • ShortHandler の HTTP ショートカットは get()post() のみ
  • APIハンドラーからレスポンスヘッダーやストリームを直接制御するAPIはない
  • 認証、認可、CORS、TLS、rate limit、永続化は組み込みではない
  • 静的配信に SPA fallback はなく、未検出パスは HTML の 404 になる
  • WebSocket の部屋、broadcast、メッセージ形式はアプリ側で実装する
  • CLI の設定ファイルは JavaScript のみで、TypeScript は探索対象外
  • 複数の tyoi*.config.js は merge されず、1つを選択する

不足する HTTP 機能は middlewares、状態管理や認証はアプリ側のコードで補います。