Статус HTTP-ответа API прототипа диспетчера API WSO2

Я использую встроенную функцию прототипа javascript в диспетчере API WSO2 и пытаюсь установить разные статусы ответа HTTP. Это возможно? Если да, то как это делается?

До сих пор я пытался установить свойство HTTP_SC, но это, похоже, не имеет никакого эффекта. mc.setProperty('HTTP_SC', "404");


person Tom Neale    schedule 12.01.2016    source источник


Ответы (2)


У меня было такое же требование, и после долгих исследований под капотом я смог найти работоспособное решение.

Причина установки свойства:

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

не сработало, это то, что свойство должно быть установлено в области оси axis2 (как сказал Абимаран). mc.setProperty не устанавливает его в этой области. Более того, объект MessageContext не предоставляет способа установить область действия.

Действие «Развернуть как прототип» фактически создает файл определения API путем слияния указанного встроенного сценария с шаблоном скорости и сохранения полученного определения API в файле.

  • Шаблон: ./repository/resources/api_templates/prototype_template.xml
  • Выходное местоположение: репозиторий/развертывание/сервер/синапсе-configs/по умолчанию/api/

Выходной файл будет иметь имя в формате:

поставщик--Имя API-vVERSION.xml

где provider — это имя пользователя создателя 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>

Я добавил его сразу после аналогичного блока (для обработки CONTENT_TYPE) в начале элемента inSequence.

person user1920897    schedule 14.04.2016

Вам необходимо добавить следующие свойства перед <send/> посредником

<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="HTTP_SC" value="403" scope="axis2"/>
person Abimaran Kugathasan    schedule 25.01.2016