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 . |