Adaptateur JSON

L'appel de points d'extrémité externes à l'aide de JSON est une activité courante. Un adaptateur JSON dédié, un service utilitaire que ses propres services peuvent sous-classer, facilite donc la tâche.

Les services d'adaptateur sont destinés à être utilisés soit comme des services mandataires (pass-through proxy), soit comme une partie d'une couche plus profonde que d'autres services invoquent, c'est-à-dire qu'à moins d'être des services mandataires, ils ne seront pas typiquement montés sur des canaux REST.

Après avoir sous-classé zato.server.service.adapter.JSONAdapter, il est possible de configurer le service de manière déclarative, sans avoir besoin d'implémenter la méthode habituelle self.handle.

Les deux attributs obligatoires qu'un adaptateur doit configurer sont outconn et method indiquant quelle connexion REST sortante utiliser et quel est le verbe HTTP.

Un service comme celui ci-dessous utilisera self.request.payload comme entrée pour être POST-ed vers la connexion sortante appelée billing.eai9.

# -*- coding: utf-8 -*-

# Zato
from zato.server.service.adapter import JSONAdapter

class SetBillingInfo(JSONAdapter):
      """ Updates a customer's billing information.
      """
      outconn = 'billing.eai9'
      method = 'POST'

Le tableau suivant répertorie tous les paramètres de configuration.

Nom Requis Valeur par défaut Notes
outconn Yes (None) Nom d'une connexion REST sortante à utiliser
method Yes (None) Méthode HTTP pour invoquer la ressource externe avec
params_to_qs -- False Si les paramètres de self.request.payload doivent former la chaîne de requête ou non.
force_in_qs -- [] Une liste de paramètres qui seront toujours placés dans la chaîne de requête, même si params_to_qs est False.
load_response -- True Si la réponse du endpoint doit être automatiquement désérialisée dans un objet Python, tel qu'un dictionnaire.
params -- {} Un dictionnaire de paramètres supplémentaires à utiliser lors de la construction d'une demande à l'endpoint en plus de ce qui a été obtenu de self.request.payload
apply_params -- APPLY_AFTER_REQUEST Doit être soit APPLY_AFTER_REQUEST soit APPLY_BEFORE_REQEUST de zato.common.ADAPTER_PARAMS. Dans le premier cas, self.params sera prioritaire sur self.request.payload. Dans le second cas, c'est l'inverse.
raise_error_on -- ['4', '5'] Une liste de préfixes de codes d'état renvoyés par le point de terminaison qui feront que l'adaptateur lèvera une instance zato.common.HTTPException.