You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:12:21