Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在服务层访问HttpServletrequest,这是最佳实践?_Java_Rest_Spring Boot_Http Headers - Fatal编程技术网

Java 在服务层访问HttpServletrequest,这是最佳实践?

Java 在服务层访问HttpServletrequest,这是最佳实践?,java,rest,spring-boot,http-headers,Java,Rest,Spring Boot,Http Headers,我需要从Spring-Boot-restfulapi的服务层访问存储在HttpServletRequest的请求头。这是因为我需要访问x-forwarded-for头以获取任何接收到的请求的原始IP地址 首先,我认为实现这一点的最简单方法是在需要此信息的服务处@Autowire-httpservetrequest,但深入思考后,我发现这不是一个好的做法,因为我在混合层 另一个选项是通过参数将我需要的信息从标头传递给需要此信息的服务中的方法 我确信有更好更干净的方法来实现这一点,但在搜索之后,我没

我需要从
Spring-Boot-restfulapi
的服务层访问存储在
HttpServletRequest
的请求头。这是因为我需要访问
x-forwarded-for
头以获取任何接收到的请求的原始IP地址

首先,我认为实现这一点的最简单方法是在需要此信息的服务处
@Autowire-httpservetrequest
,但深入思考后,我发现这不是一个好的做法,因为我在混合层

另一个选项是通过参数将我需要的信息从标头传递给需要此信息的服务中的方法

我确信有更好更干净的方法来实现这一点,但在搜索之后,我没有更好的方法将这些信息传递到服务层


有人知道将某些请求头传递到服务层或这些头包含的信息的最佳做法吗?

首先,由于自动连线对象在您杀死应用程序之前一直存在,因此您不应该自动连线它们>

另一方面,即使您可能也不应该将httpServletRequest对象传递给服务层。使用服务层的原因已经是“分层”。您可以使用其他东西作为控制器,此时servletRequest对象将毫无用处。它不应该在服务层的范围内


最后,如果您的请求中有一些内容需要为普通数据提供服务,您可以创建一个参数对象并将其传递给服务层。

I最好的解决方案是通过参数将我需要的信息从标头传递给需要此信息的服务中的方法。只需将HttpServletrRequest对象的参数结尾放在您的方法中。为什么不能只将IP地址作为字符串参数发送给您的服务层方法在服务层!这是正常的,请务必将各层分开。提取RESTful方法中的IP地址,并将其作为参数传递给服务方法。