2017-05-15 13 views
0

サービスレイヤからHttpServletRequestに保存されたリクエストヘッダーには、Spring Boot RESTful APIにアクセスする必要があります。これは、受信したリクエストの元のIPアドレスを取得するために、x-forwarded-forヘッダーにアクセスする必要があるためです。サービス層でHttpServletRequestにアクセスするのがベストプラクティスですか?

最初に私はそれを達成する最も簡単な方法はこの情報を必要とするサービスで@Autowire HttpServeletRequestですが、これについて深く考えてみましたが、私は混合しているのでそれは良い方法ではないことがわかりました層。

もう1つの方法は、ヘッダーから必要な情報を、この情報を必要とするサービス方法にパラメータを渡すことです。

これを実現するにはより良い方法があると確信していますが、検索後にはこの情報をサービス層に取得する方法がありません。

サービス層にいくつかのリクエストヘッダーを渡すのがベストプラクティスか、それらのヘッダーに含まれている情報を知っている人はいますか?まずによるautowiredオブジェクトへ

+0

IMHOのベストソリューションは、ヘッダーからこの情報が必要なサービスのメソッドに必要な情報を渡します。 –

+0

メソッドのパラメータのHttpServletRrquestオブジェクトの終わりを置くだけです。 – kodmanyagha

+0

サービス層のメソッドに文字列パラメータとしてIPアドレスを送信できないのはなぜですか?それは正常です –

答えて

0

はあなたがアプリケーションを強制終了するまで、あなたがそれらをautowireべきでないまま>declaring-httpsession-object-in-controller

一方、でもあなたがサービス層にHttpServletRequestオブジェクトを渡すべきではない可能です。サービス層を使用する理由は、すでに「レイヤー」です。あなたはコントローラとして別のものを使うことができ、その時servletRequestオブジェクトは役に立たなくなります。サービス層の範囲内にあってはなりません。

最後に、通常のデータをサービスするという意味の要求がある場合は、パラメータオブジェクトを作成し、サービスレイヤに渡すことができます。

関連する問題