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

WSO2 APIM 4.1.0响应中介器中如何获取请求信息?

在响应流中使用请求的Query参数、Headers等信息

要在WSO2的响应流(比如outSequence)中访问请求阶段的Query参数、Headers这类数据,核心是先把请求数据存储到消息上下文(Message Context)的属性中,因为默认情况下,请求阶段的上下文数据不会自动带到响应阶段。

具体实现方式:

  • 在inSequence中存储请求数据
    在请求处理的inSequence里,用Property Mediator把需要的Query参数、Headers保存为上下文属性:

    <inSequence>
        <!-- 存储URL查询参数firstname到上下文属性 -->
        <property name="REQ_FIRSTNAME" expression="$url:firstname" scope="default" type="STRING"/>
        <!-- 存储请求Header(比如Authorization)到上下文属性 -->
        <property name="REQ_AUTH_HEADER" expression="$trp:Authorization" scope="default" type="STRING"/>
        <!-- 继续其他请求处理逻辑 -->
        <send/>
    </inSequence>
    
    • scope="default":确保属性在整个消息生命周期(包括outSequence)中可用
    • $url:firstname:用于提取URL查询参数;$trp:HeaderName用于提取请求Header
  • 在outSequence中调用存储的属性
    在响应流的outSequence里,直接引用之前存储的上下文属性即可:

    <outSequence>
        <!-- 输出存储的firstname参数 -->
        <log level="custom">
            <property name="firstname" expression="$ctx:REQ_FIRSTNAME"/>
        </log>
        <!-- 输出存储的请求Header -->
        <log level="custom">
            <property name="auth_header" expression="$ctx:REQ_AUTH_HEADER"/>
        </log>
        <send/>
    </outSequence>
    

关键说明:

直接在outSequence中使用$url:firstname无法获取请求参数,因为进入outSequence时,当前处理的是响应消息,$url表达式默认指向响应的URL而非请求URL,必须提前在inSequence中把请求数据持久化到上下文属性里。

内容的提问来源于stack exchange,提问作者m.feyzollahi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:45:47