バックグラウンド
いくつかの POST、PUT、および GET エンドポイントを持つ単純なプラグ ルーターがあります。ただし、各エンドポイントは、リクエストのヘッダーに対して特定の検証を行う必要があります。Plugでこれを達成する方法がわかりません。コード
リクエストを受信してコントローラーにリダイレクトする非常に一般的なルーターがあります。
defmodule Api do
use Plug.Router
alias Api.Controllers.{Product, NotFound, Ping}
plug :match
plug Plug.Logger
plug :dispatch
get "/ping", do: Ping.process(conn)
put "/product", do: Product.process(conn)
match _, do: NotFound.process(conn)
end
問題
ただし、ステップがありません。/products エンドポイントでヘッダーを検証する必要があります。つまり、ヘッダーには特定のフィールドが設定されている必要があります。たとえば、「conten-type」ヘッダーや「bananas」などのカスタム ヘッダーなどです。
この検証は、すべてのエンドポイントを対象とするものではありません。さらに悪いことに、各エンドポイントが独自の検証を行うことです。たとえば、「バナナ」ヘッダーを持つことは「/products」エンドポイントにとって重要かもしれませんが、「/ping」エンドポイントはあまり気にしません.
リサーチ
私はこの記事を読みました:
ただし、これはすべてのエンドポイントに適用され、特定のものではありません。
質問
- 私が探しているものを Plug で達成することは可能ですか? もしそうなら、どのように?