リソースルート
リソースルートはアプリケーションの UI の一部ではありませんが、アプリケーションの一部ではあります。あらゆる種類のレスポンスを送信できます。
Remix のほとんどのルートは UI ルート、つまり実際にコンポーネントをレンダリングするルートです。しかし、ルートは必ずしもコンポーネントをレンダリングする必要はありません。ルートをウェブサイトへの汎用エンドポイントとして使用したい場合がいくつかあります。以下にいくつかの例を示します。
- 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 を作成できます。