プログラミング§アクションの構成この章では、汎用的なアクション機能を定義するいくつかの方法を紹介します。アクションを宣言する複数の方法を見てきました。章にもあるとおり、ほかにも方法があります。呼ばれるトレイトに全て定義されています。オブジェクトはこのトレイトの単なるインスタンスです。実装することで、アクションを作るために使用できる、再利用可能なアクションスタックを宣言することができます。ロギングデコレータの簡単な例から始めましょう。このアクションの各呼び出しをログに記録します。メソッドでこの機能を実装するやり方です。よって構築されたすべてのアクションに対して呼び出されます。同じように使用できます。アクションを構築するためのさまざまなメソッドをすべて提供するので、例えば、独自のボディパーサーを宣言することもできます。様々な種類の認証を行いたい、様々な種類の一般的な機能を提供したいなど、複数のアクションビルダーが必要となるでしょう。このような場合、それぞれの種類に応じたアクションビルダーに対するロギングアクションのコードを書き直すのではなく、再利用が可能な方法で定義したくなります。アクションをラッピングして実装することで、再利用が可能なアクションのコードを書くことができます。アクションビルダーを使って、独自のアクションクラスを定義せずにアクションを構築することもできます。メソッドを使ってアクションビルダーにミックスインさせることができます。Logging(action)}これで、ビルダーを先ほどと同じ方法で使用することができます。World")}ラッピングしたアクションはアクションビルダーなしでミックスインさせることができます。}}§より複雑なアクションこれまでは、リクエストに全く影響しないアクションしか示していませんでした。入力されてくるリクエストオブジェクトに対して、読み込みと変更も可能です。ヘッダを組み込みですでにサポートしています。リクエストをブロックすることができます。}}そして、返された結果を変更することもできます。"Chrome=1"))}§様々なリクエストタイプアクションの構成では、HTTPリクエストとレスポンス・レベルで追加の処理を実行できますが、リクエスト自体に対してコンテキストを追加したりバリデーションを実行したりするデータ変換のパイプラインを構築することがよくあります。入力リクエストタイプと次のレイヤーに渡される出力タイプの両方でパラメータ化された、リクエストの関数と考えることができます。各アクション関数は、認証、オブジェクトのデータベース検索、権限チェックなどのような、アクション全体で作成および再利用したいモジュール的な処理を表すことができます。実装する、いくつかの事前定義されたトレイトがあります。追加情報を加えるなど、リクエストを変更することができます。リクエストの値を変更することなくエラーを生成するなど、リクエストを選択的に受け取ることができます。上記の両方の一般的なケースです。入力として受け取り、アクションを構築する関数の特殊なケースです。定義することもできます。入力と出力タイプのインスタンスを作るのが便利ですが、これは厳密には必要ではありません。§認証アクション関数の最も一般的な使用例のひとつが認証です。追加する独自の認証アクションを簡単に実装することができます。入力として受け取るので、これもActionBuilderです。組み込みの認証アクションビルダーを提供しています。組み込みの認証アクションビルダーは、シンプルなケースの認証を実装するために必要なコードを最小限に抑える便利なヘルパーであり、その実装は上記の例に非常に似ています。組み込みの認証アクションでは満たされない、より複雑な要件がある場合の独自の実装は、シンプルであるだけではなく、推奨もされています。ついて考えてみましょう。見つける必要があるとします。この場合、このロジックをアクション関数に入れると便利です。追加するリクエストオブジェクトを作成します。返すアクションリファイナーを作成します。取得するメソッド内で定義されています。最後に、リクエストを続行するかどうかを検証するアクション関数が必要な場合があります。アイテムにアクセスする権限を持っているかどうかをチェックし、そうでない場合はエラーを返します。つなぎ、1つのアクションを作成することができます。チームによってメンテナンスされているものではありません。確認することができます。読んで、お気軽にプルリクエストを送ってください。