Abilitare WSO2 Enterprise Integrator ( ESB ) alla lettura delle API Contentful

La particolarità di Contentful

Contentful è un CMS headless inventato in Germania e molto utilizzato per la creazione di contenuti gestibili su diversi front-end.

La sua integrazione con WSO2 Enterprise Integrator però non è banale infatti le api esposte dal CMS tedesco hanno una peculiarità, un content type proprietario che le rende mal digeribili da un ESB:

Content-Type →application/vnd.contentful.delivery.v1+json

Infatti, provando ad effettuare una chiamata tramite Enterprise Integrator o Api Manager otterremo una risposta del genere:

Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ‘{‘ (code 123) in prolog; expected ‘<‘

Questo cosa significa ? Significa che il motore dell’ EI si aspetta una risposta XML ed ottiene una risposta JSON.

Modifiche axis2 su EI

Occorrerà quindi abilitare sulla propria installazione di WSO2 Enterprise Integrator questo tipo di content type modificando il file “axis2.xml“.

Il file suddetto, in una configurazione classica, si trova in: /opt/wso2e1-v.x.x/conf/axis2

Le modifiche da apportare riguardano le sezioni “Message Formatters” e “Message Builders”:

Message Formatters da aggiungere:

<messageFormatter contentType="application/vnd.contentful.delivery.v1+json"                         class="org.apache.synapse.commons.json.JsonStreamFormatter"/>

<messageFormatter contentType="application/vnd.contentful.delivery.v2+json"                         class="org.apache.synapse.commons.json.JsonStreamFormatter"/>

Queste due entry permetteranno al WSO2 Enterprise Integrator di gestire le API Contentful sia nella versione 1 che nella versione 2.

Message Builders da aggiungere:

<messageBuilder contentType="application/vnd.contentful.delivery.v1+json"
class="org.apache.synapse.commons.json.JsonStreamBuilder" />


<messageBuilder contentType="application/vnd.contentful.delivery.v2+json"
class="org.apache.synapse.commons.json.JsonStreamBuilder" />

Una volta effettuate queste modifiche, per renderle attive, occorrerà riavviare l’istanza di WSO2 Enterprise Integrator

Riferimenti

wso2-esbinvoke-contentful-api

0 comments on “Abilitare WSO2 Enterprise Integrator ( ESB ) alla lettura delle API ContentfulAdd yours →

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *