Support Center
REST outgoing connections allow one to invoke external REST-based endpoints.
For instance, let's assume that there is a POST REST endpoint at https://example.com which expects:
/customer/{cust_id}/phone_no/{phone_no}
?priority=normal
{"billing":"395.7", "currency":"EUR"}
X-App-Name: Zato
and X-Environment: Production
An outgoing connection and a service using it would read as follows:
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
class SetBillingInfo(Service):
""" Updates a customer's billing information.
"""
def handle(self):
# Python dict representing the payload we want to send across
payload = {'billing':'395.7', 'currency':'EUR'}
# Python dict with all the query parameters, including path and query string
params = {'cust_id':'39175', 'phone_no':'271637517', 'priority':'normal'}
# Headers the endpoint expects
headers = {'X-App-Name': 'Zato', 'X-Environment':'Production'}
# Obtains a connection object
conn = self.outgoing.plain_http['SetBillingInfo'].conn
# Invoke the resource providing all the information on input
response = conn.post(self.cid, payload, params, headers=headers)
Notes:
As a programmer you never need to leave Python land, (de-)serialization is automatic and one can work with Python dataclasses or dictionaries only
The response object offers access to the whole of the body, headers and other metadata that the endpoint returns
Accessing JSON endpoints can be further simplified using by the dedicated JSON adapter