public interface ContainerRequestFilter
デフォルトでは、つまり、name binding
がフィルター実装クラスに適用されていない場合、フィルターインスタンスはグローバルに適用されますが、ランタイムによって受信リクエストが特定のリソースに一致した後でのみ適用されます。フィルターに @NameBinding
アノテーションが適用されている場合、フィルターは一致後リクエスト拡張ポイントでも実行されますが、一致した resource or sub-resource method
が同じ名前バインディングアノテーションにバインドされている場合のみです。
フィルターを事前一致拡張ポイントで適用する必要がある場合、つまり、ランタイムによってリクエストの一致が実行される前に、フィルターに @PreMatching
アノテーションを付ける必要があります。
事前一致リクエストフィルターを使用して、一致するアルゴリズム(HTTP メソッド、Accept ヘッダー、キャッシュされたレスポンスを返すなど)への入力を更新します。それ以外の場合、 一致後リクエスト拡張ポイント(リソースメソッドマッチングの成功)が推奨されます。
このインターフェースを実装するフィルターは、ランタイムによって検出されるように、@Provider
でアノテーションを付ける必要があります。コンテナーリクエストフィルターインスタンスを検出して、dynamically
を特定のリソースメソッドにバインドすることもできます。
PreMatching
, ContainerResponseFilter
修飾子と型 | メソッドと説明 |
---|---|
void | filter(ContainerRequestContext requestContext) リクエストがリソースにディスパッチされる前に呼び出される Filter メソッド。 |
void filter(ContainerRequestContext requestContext) throws IOExceptionSE
フィルターチェーン内のフィルターは、javax.annotation.Priority
クラスレベルのアノテーション値に従って順序付けられます。リクエストフィルターが ContainerRequestContext.abortWith(javax.ws.rs.core.Response)
メソッドを呼び出すことによってレスポンスを生成する場合、(事前一致またはリアクティブ一致)リクエストフィルターチェーンの実行が停止され、レスポンスが対応するレスポンスフィルターチェーン(事前一致またはリアクティブのいずれか)に渡されます。一致)。例: 事前一致キャッシュフィルターは、この方法でレスポンスを生成する可能性があります。これにより、一致後リクエストフィルターと一致後レスポンスフィルターが効果的にスキップされます。ただし、この方法で生成されたレスポンスは、事前一致レスポンスフィルターチェーンによって引き続き処理されることに注意してください。
requestContext
- リクエストコンテキスト。IOExceptionSE
- I/O 例外が発生した場合。PreMatching
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.