我正在从Netty上实现的旧库迁移到RestController。
我曾经在控制器中有一种能力来获得整个Request对象并将其传递下去,而后来的逻辑层则从头部和查询参数中获取它们需要的任何东西。
dosomething(request: Request, someQueryParam: String) {
if(someQueryParam!=null) { doAnotherThing(request) }
}
doAnotherThing(request: Request) { .. use more query params and headers ..}
假设这有很多参数并通过更多的类。我现在如何才能做到这一点,而不暴露在底部使用的所有参数列表,在每个端点签名上?(而且不必移动我的API用户来使用requestBody)
1条答案
按热度按时间lp0sw83n1#
Spring为你提供了很多选择。
首先是:你不必带着你的请求到处跑,在任何地方(除了多线程)你都可以得到当前的请求。
Is there a static way to get the current HttpServletRequest in Spring
否则,您也可以将
HttpServletRequest request
作为参数添加到控制器方法中,以获取请求并将其作为参数传递给服务。Spring 3 MVC accessing HttpRequest from controller
但是更好的方法是在控制器级别获取所需的字段,并将其作为参数传递给服务。
1.@请求标题
1.@请求参数
1.@路径变量
然后你就可以编写很好的JUnit-Tests,你就有了很好的接口,而且服务不会被绑定到HttpRequests。