json - cómo llamar a un servicio(o parámetro de un servicio) desde otro servicio en wso2 ESB
wso2esb restful-url (2)
Esto es cadena de servicio. Puede consultar el artículo de la biblioteca WSO2 que explica esto claramente a través de un ejemplo http://wso2.com/library/articles/2011/01/wso2-esb-by-example-service-chaining/
Estoy usando wso2 ESB para crear una API de descanso en formato json. Tengo un servicio web json tranquilo que da la respuesta. Necesito usar uno de los parámetros de esta respuesta en otra llamada de servicio. ¿Cómo puedo hacer este tipo de servicio encadenando en wso2 ESB?
por ejemplo: -
Tengo una url relajante como abc.com/cusotmer. Recibí la respuesta de vuelta. Supongamos que "id" es uno de los parámetros de respuesta. Deseo utilizar este parámetro en otra llamada de servicio (por ejemplo, xyz.com/sheet) que internamente llame al primer servicio (abc.com/cusotmer).
¿Podría alguno de ustedes ayudarme en este sentido?
El servicio de encadenamiento es una característica importante en cualquiera de los ESB disponibles.
Puede usar Call Mediator que mantiene el control en la secuencia (digamos su insecuencia)
Puede usar la llamada para el primer punto final, para el segundo punto final supongo que el ID está disponible en el cuerpo de respuesta, puede usar json-eval o xpath para obtener este valor, dependiendo del tipo de datos que utilice el segundo servicio, puede usar PayloadFactoryMediator y establecer identificación en la parte deseada del cuerpo
Y en la siguiente línea puede volver a llamar usando Call Mediator o Send
Un código aproximado será similar.
<payloadFactory media-type="json">
<format>
{ "A": "6", "tests": [{ "id": "xyz", "status": "new", "emp": [{ "Id": "12345" }] }], "student": [{ "Id": "65", "Name": "Ram" }] }
</format>
</payloadFactory>
<call>
<endpoint>
<http method="get" uri-template="http://192.168.1.10:8088/mockaxis2service"/>
</endpoint>
</call>
<!-- suppose id field comes as response in field name id2 -->
<payloadFactory media-type="json">
<format>
{
"inp2second":"$1"
}
</format>
<args>
<arg expression="$.emp.id2"/>
</args>
</payloadFactory>
<call> or <send>
Puede usar el mediador de llamada o envío ahora, enviar mediador para mover el control a la secuencia externa.
para la expresión json usada anteriormente como $.emp.id2
refiérase a la página de soporte de json por ejemplo. Un ejemplo de servicio de encadenamiento también está disponible aquí.