2015-03-19 1 views
0

У меня есть API, работающий на http://my_internal_api.com, и я разоблачаю его с помощью WSO2, на https://mywso2:8280/my_api.Как настроить WSO2 для автоматической замены URL-адресов API?

Все работает нормально, но API REST дает атрибуты url в json, которые отформатированы для исходного URL-адреса сервера.

Пример: При получении контактной информации, я получаю JSON объект:

[{contact_id: 1, url: contact_url}, {}] 

Это contact_url в виде: http://my_internal_api.com/contacts/1

Оно должно быть: https://mywso2:8280/my_api/contacts/1

Есть ли способ решить это? Я предполагаю, что нужно использовать сквенну, но я не знаю, правильно ли это, или я пытаюсь изобрести колесо.

ответ

0

Самый простой способ заключается в использовании посредника заголовка, чтобы добавить заголовок X-Forwarded-Host, как это:

<sequence name="WSO2AM--Ext--In"> 
    <header name="X-Forwarded-Host" 
      scope="transport" 
      expression="get-property('transport','Host')"/> 
    <header name="X-Forwarded-Proto" scope="transport" value="https"/> 
</sequence> 

Таким образом, большинство API, будет в состоянии правильно разрешить хост

0

Вы можете добавить выходную последовательность, используя расширение-посредник [1]. Найти все вхождения «my_internal_api.com» и заменить на «mywso2: 8280». Для замены строки в полезной нагрузке вы можете использовать посредник скрипта.

<script language="js"> 
var payload = mc.getPayloadXML().toString(); 
<property name="PAYLOAD" value="payload"/> 
var changedPayload = payload.replace(/http:\/\/my_internal_api.com/, mc.getProperty('apiURL')); 
var xml = new XML(newPayLoad); 
mc.setPayloadXML(xml);</script> 

1. https://docs.wso2.com/display/AM180/Adding+Mediation+Extensions

+0

Где я могу найти некоторые документы в пространстве имен mc? – Alvaro

+0

https://docs.wso2.com/display/ESB480/Script+Mediator – Jenananthan

+0

Эй, Робин У меня небольшие проблемы с вашим кодом. Мой исходный ответ находится в JSON, но getPayloadJSON ничего не возвращает, и getPayloadXML возвращает пустой элемент. У вас есть рабочий пример? – Alvaro

 Смежные вопросы

  • Нет связанных вопросов^_^