メインコンテンツへスキップ
同じハンドラは HTTP リクエストに応答することもできます。 2つのルートを追加します:
  • ドキュメントを生成するUI呼び出しの POST エンドポイントと
  • ドキュメントを印刷可能なウェブページとしてレンダリングするパブリックGET エンドポイント。
どちらも httpRouteTriggerSettings を使用します。 アプリのルートは /s/ パスで指定されます。ローカル環境やセルフホスト環境では、そのパスは Twenty サーバーによって提供されます(例: http://localhost:2020/s/documents/generate)。 Twenty Cloud では、RestApiClient はワークスペースの functions ドメインを通じてパスを解決します。

POST route — オンデマンドで生成

ここでは generateDocumentHandler を再利用しているため、ロジックを繰り返す必要はありません。リクエストボディを読み取るだけの薄いアダプターになっています。
共有ハンドラーは失敗時に提案された status を返すので、ルートは適切な 4xx/5xx コードで 応答できます。 isAuthRequired: true は、呼び出し元が有効なトークンを提示する必要があることを意味します。次の章のフロントエンドのコンポーネントは、ユーザーのアクセストークンを自動的に渡します。

GET route — ウェブページとしてレンダリング

JSON の代わりに HTML を返すには、本文を Content-Type ヘッダーで囲みます。 このルートはパブリックなので(isAuthRequired: false) 、 生成されたドキュメントをリンクとして共有できます。
documentHtmlPage は、Markdown 本文を HTML にレンダリングし(marked を使用し、サニタイズ済み)、テンプレートコンテンツだけが表示される、きれいで印刷可能なページに差し込みます。これは PDF やアプリ内プレビューと同じ見た目です。 ヘルパーを参照

お試しください

テンプレートとワークスペース内の人を使用して、ルートを呼び出します(トークンを 設定 → APIs & Webhookから取得します)
返されたドキュメントをブラウザで開きます:
レンダリングされたドキュメントの Web ページ

公開 GET ルートは、ドキュメントを印刷可能なページとしてレンダリングします。

yarn tindev:function:logs でテスト中に関数のログをストリーミングしたり、 yarn tindev:function:exec で直接呼び出したりすることもできます。
このステップの後: アプリは HTTP 経由でドキュメントを生成し、Web ページとして配信できるようになります。 curlなしで使えるようにしましょう。

次へ: UIの構築 →

表示、ナビゲーション、コマンド、およびフロントコンポーネント。