Core · フレームワーク · HTTP と API

ルートとリクエストのコンテキスト

HTTP のエンドポイントは、ルートの提供内容としてアプリに入ります。ファクトリーは起動時にサービスを解決し、ハンドラーはリクエストごとに入力と身元を読み取ります。

API とルートの範囲

TypeScript
import { Hono } from 'hono';
import { defineApiRoutes } from '@nocobase/app-server/router';

export default defineApiRoutes(() => {
  const router = new Hono();
  router.get('/example/ping', (context) => context.json({ data: { ok: true } }));
  return router;
});

この宣言を、アプリの server/routes/index.ts の配列か、プラグインの routes に追加します。追加のベースパスがなければ、/api/example/ping で応答します。この公開の例は業務データを読み取りません。

defineApiRoutes() は API の接頭辞の下にマウントします。defineRootRoutes() は、ほかのプロトコルの境界のためにアプリのルートにマウントします。サブパスでのデプロイではアプリのベースパスが付きます。プラグインで、ホストやデプロイの接頭辞をハードコードしないでください。

リクエストごとのコンテキスト

Hono の Context は、req.param()、req.query()、ボディへのアクセス、レスポンスのメソッドを提供します。パスとクエリーの値は最初は文字列で、宣言した型が外部からの入力を検証するわけではありません。

サービスは、ファクトリーの app のコンテナから解決します。認証の組み込みは、それぞれの取り決めに従ってリクエストの身元を設定します。すべての Hono のリクエストに user フィールドがあるとは考えないでください。

認可と公開

認証とデータのポリシーは明示的に組み込みます。フロントエンドのメニューを隠しても、エンドポイントは保護されません。defineRepositoryApiRoutes() は、名前を付けたコレクションを、明示的な操作と完全なポリシーで公開できます。すべてのテーブルを公開したり、スキーマを作成したりはしません。宣言、登録、ポリシー、クライアントからの呼び出しについては Repository のデータ API を参照してください。

API のメソッドとパスが重複すると、起動時のチェックで失敗します。別々の依存関係のコピーによるメタデータのレジストリーの混在を避けるため、OpenAPI の記述は @nocobase/app-server/router の describeRoute などのヘルパーで登録します。

検証とレスポンス、API Client、プラグインのサーバー API を参照してください。

インターフェースと実装

NocoBase ドキュメントアシスタント

NocoBase について何を知りたいですか?

質問は個別に回答され、過去の質問や回答は参照されません。必要な背景をすべて含めてください。