Before, ServiceA directly calls ServiceB's method, creating tight coupling. After, ServiceA sends an HTTP POST request to ServiceB's REST endpoint, enabling loose coupling and independent deployment.
### Before: Direct function call tightly coupling services
class ServiceB:
def process(self, data):
return f"Processed {data}"
class ServiceA:
def __init__(self):
self.service_b = ServiceB()
def handle(self, data):
result = self.service_b.process(data)
return f"ServiceA got: {result}"
### After: ServiceA calls ServiceB via REST API
from flask import Flask, request, jsonify
import requests
# Service B
app_b = Flask(__name__)
@app_b.route('/process', methods=['POST'])
def process():
data = request.json.get('data')
return jsonify({'result': f"Processed {data}"})
# Service A
class ServiceA:
def handle(self, data):
response = requests.post('http://serviceb/process', json={'data': data})
result = response.json().get('result')
return f"ServiceA got: {result}"