如何在Micronaut的OpenAPI生成控制器中获取请求对象及属性?
在Micronaut中获取请求对象访问过滤器设置的属性
当然可以获取请求对象,有两种常用方式:
直接在控制器方法中注入HttpRequest参数
修改生成的控制器方法,添加HttpRequest<?>类型的参数,Micronaut会自动注入当前请求实例:@Post("/api/auth/login") @Produces({}) @Consumes({"application/json"}) HttpResponse<Void> login( @Body LoginRequest loginRequest, HttpRequest<?> request );之后就可以通过
request.getAttribute("你的属性键名")获取过滤器中设置的属性值。使用RequestContextHolder获取请求
如果不想修改生成的方法(避免重新生成代码时被覆盖),可以在方法内部通过RequestContextHolder获取当前请求:import io.micronaut.http.context.RequestContextHolder; // 控制器方法内部代码 HttpRequest<?> request = RequestContextHolder.currentRequest() .orElseThrow(() -> new IllegalStateException("当前无请求上下文")); Object filterAttribute = request.getAttribute("你的属性键名");
注意:过滤器中设置属性时,要使用request.setAttribute("属性键名", 属性值)的方式,确保属性能被正确读取。
内容的提问来源于stack exchange,提问作者Sergey Tselovalnikov
相关产品推荐
相关产品推荐

