WSO2 API 管理器原型 API HTTP 响应状态

WSO2 API manager prototype API HTTP response status

我正在使用 WSO2 API 管理器中的内联 javascript 原型功能,我正在尝试设置不同的 HTTP 响应状态。这可能吗?如果是的话是怎么做到的?

到目前为止,我已经尝试设置 HTTP_SC 属性 但这似乎没有任何效果。 mc.setProperty('HTTP_SC', "404");

您需要在 <send/> mediator

之前添加以下属性
<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="HTTP_SC" value="403" scope="axis2"/>

我有同样的要求,经过大量探索后,我找到了可行的解决方案。

设置属性的原因:

mc.setProperty('HTTP_SC', "404");

不起作用是 属性 需要在 axis2 范围内设置(如 Abimaran 所说)。 mc.setProperty 没有在那个范围内设置它。此外,MessageContext 对象不提供设置范围的方法。

'Deploy as Prototype' 操作实际上创建了 API 定义文件,方法是将指定的内联脚本合并到速度模板中,并将生成的 API 定义存储到文件中。

  • 模板:./repository/resources/api_templates/prototype_template.xml
  • 输出位置:repository/deployment/server/synapse-configs/default/api/

输出文件的名称格式如下:

供应商--API 姓名--vVERSION.xml

其中提供者似乎是 API 创建者的用户名。

我所做的是向模板添加过滤器:

<filter source="boolean(get-property('HTTP_SC'))" regex="false">
    <then>
        <property name="HTTP_SC" value="200" scope="axis2"/>
    </then>
    <else>
        <property name="HTTP_SC" expression="get-property('HTTP_SC')" scope="axis2"/>
    </else>
</filter>

我在 inSequence 元素开头的类似块(用于处理 CONTENT_TYPE)之后立即添加了它。