リソースルート
リソースルートは、アプリケーションの UI の一部ではありませんが、アプリケーションの一部です。あらゆる種類のレスポンスを送信できます。
Remix のほとんどのルートは UI ルート、つまり実際にコンポーネントをレンダリングするルートです。しかし、ルートは必ずしもコンポーネントをレンダリングする必要はありません。ルートを Web サイトへの汎用的なエンドポイントとして使用したいケースがいくつかあります。以下に例をいくつか示します。
- Remix UI とサーバー側コードを再利用するモバイルアプリ用の JSON API
- PDF の動的生成
- ブログ投稿やその他のページのソーシャル画像の動的生成
- Stripe や GitHub などの他のサービスの Webhook
- ユーザーが選択したテーマのカスタムプロパティを動的にレンダリングする CSS ファイル
リソースルートの作成
ルートがデフォルトのコンポーネントをエクスポートしない場合、リソースルートとして使用できます。GET
で呼び出されると、ローダーのレスポンスが返され、親ルートローダーも呼び出されません(これらは UI に必要ですが、これは UI ではありません)。POST
で呼び出されると、アクションのレスポンスが呼び出されます。
たとえば、レポートをレンダリングする UI ルートを考え、リンクに注目してください。
これは、ページの PDF バージョンへのリンクです。この機能を実現するために、その下にリソースルートを作成できます。コンポーネントを持たないことに注目してください。これがリソースルートになります。
ユーザーが UI ルートからリンクをクリックすると、PDF に移動します。
リソースルートへのリンク
リソースルートへのリンクでは、reloadDocument
を使用する必要があります
リソースルートへのリンクを行う際に注意すべき微妙な点があります。<Link reloadDocument>
またはプレーンな <a href>
でリンクする必要があります。reloadDocument
なしで通常の <Link to="pdf">
でリンクすると、リソースルートは UI ルートとして扱われます。Remix は fetch
でデータを取得してコンポーネントをレンダリングしようとします。あまり気にしないでください。この間違いをすると、役に立つエラーメッセージが表示されます。
URL エスケープ
リソースルートには、ファイル拡張子を付けたいと思うでしょう。これは、Remix のルートファイル命名規則の 1 つが .
を /
に変換することであるため、UI をネストすることなく URL をネストできるため、厄介です。
ルートのパスに .
を追加するには、[]
エスケープ文字を使用します。PDF ルートファイル名は、次のようになります。
さまざまなリクエストメソッドの処理
GET
リクエストを処理するには、ローダー関数をエクスポートします。
POST
, PUT
, PATCH
または DELETE
リクエストを処理するには、アクション関数をエクスポートします。
Webhook
リソースルートは、Webhook の処理に使用できます。たとえば、新しいコミットがリポジトリにプッシュされたときに GitHub から通知を受け取る Webhook を作成できます。