2010-12-28 9 views
2

私はGET要求のみを許可するゲートウェイを徹底的に使っていますが、その後ろのRESTエンドポイントは広範囲のメソッド(POST、PUT、DELETE、OPTIONS)を受け入れることができます。したがって、私はパラメータとして要求メソッドを渡そうとしています。正しいメソッドで要求を転送するフィルターを持っています。私が仕様で見ることができるので、変更を加えずにリクエストを転送することのみが許可されています:リクエストメソッドを変更してリクエストを転送することはできますか?

request.getRequestDispatcher(route).forward(request, response) 

回避策はありますか?

注:リダイレクトは私にとってはオプションではありません。

答えて

1

安心なサービスを処理する1つのRestサーブレット(これは通常そうです)がある場合は、それを拡張してserviceメソッドをオーバーライドすることができます。ここでは、希望するパラメータに応じてdoPost(..)doPut(..)などを呼び出すことができます。 HttpServletのデフォルトの実装では、request.getMethod()が使用されます。

もう1つの方法は、フィルターをURL.openConnection(またはapache commons httpコンポーネント)を使用して新しい要求をエンドポイントに送信し、その内部要求の結果をクライアントにストリーミングすることです。リクエストメソッドを指定することができます。

とにかく、あなたは本当に扱いにくい状況に陥るので、あなたのゲートウェイの限界を克服しようとするべきだと思います。

関連する問題