a laptop computer sitting on top of a wooden desk

How Two Applications Communicate Using an API

2/22/20253 min read

rom flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/process_data', methods=['POST'])

def process_data():

"""Handles requests from Application A."""

try:

data = request.get_json()

if not data:

return jsonify({"error": "No data provided"}), 400

user_id = data.get("user_id")

item_id = data.get("item_id")

quantity = data.get("quantity")

if not all([user_id, item_id, quantity]):

return jsonify({"error": "Missing required fields"}), 400

result = process_the_data(user_id, item_id, quantity)

if result["status"] == "success":

return jsonify({"status": "success", "message": "Data processed", "result": result["data"]}), 200

else:

return jsonify({"status": "error", "message": result["message"]}), 500

except Exception as e:

print(f"Error processing data: {e}")

return jsonify({"status": "error", "message": "An error occurred"}), 500

def process_the_data(user_id, item_id, quantity):

"""Example function to process the data."""

if quantity > 0:

processed_data = {"user_id": user_id, "item_id": item_id, "quantity": quantity * 2}

return {"status": "success", "data": processed_data}

else:

return {"status": "error", "message": "Invalid quantity"}

if name == '__main__':

app.run(debug=True, port=5000)

In today's digital world, different applications often need to communicate with each other to exchange data. This is where APIs (Application Programming Interfaces) come into play. In this blog post, we will explore how two applications, a client (Application A) and a server (Application B), communicate using a simple API.

Understanding the Setup

Imagine you have a mobile app or web service (Application A) that needs to send data to another application (Application B). Application B processes this data and sends a response back. This is exactly what we’ll demonstrate with a Flask-based API and a Python script.

Application A (Client) – Sending Data

The role of Application A is to send data to Application B via an API request.

Steps Involved:
  1. Define the API endpoint – This is the URL where Application B receives the request.

  2. Send data in JSON format – JSON is a commonly used format for data exchange.

  3. Handle the response – The client checks if the request was successful and processes the response.

  4. Handle errors – If there is an issue, it catches the error and informs the user.

Here’s how the client (Application A) works in Python:

Application B (Server) – Processing the Data

Application B acts as a server that listens for data from Application A, processes it, and returns a response.Steps Involved:

  1. Set up a Flask application – Flask is a lightweight web framework.

  2. Define an API route/api/process_data is where Application B listens for incoming requests.

  3. Extract and validate data – Ensures that all required fields are present.

  4. Process the data – In this case, we simply double the quantity.

  5. Send a response – Returns the processed data or an error message.

Here’s how Application B works in Python using Flask:

import requests

import json

# API endpoint of Application B

API_ENDPOINT = "http://application-b.example.com/api/process_data"

def send_data_to_api(data):

"""Sends data to Application B's API endpoint."""

try:

headers = {'Content-Type': 'application/json'}

response = requests.post(API_ENDPOINT, data=json.dumps(data), headers=headers)

response.raise_for_status()

return response.json()

except requests.exceptions.RequestException as e:

print(f"Error communicating with API: {e}")

return None

except json.JSONDecodeError as e:

print(f"Error decoding JSON response: {e}")

return None

# Example data to send

data_to_send = {"user_id": 123, "item_id": 456, "quantity": 2}

api_response = send_data_to_api(data_to_send)

if api_response:

print("API Response:", api_response)

if api_response.get("status") == "success":

print("Data processed successfully!")

else:

print("Data processing failed.")

else:

print("Failed to send data to API.")

How the Two Applications Work Together
  1. Application A sends data (user ID, item ID, and quantity) to Application B.

  2. Application B receives the data, checks if it is valid, and processes it.

  3. Application B doubles the quantity and returns a response.

  4. Application A reads the response and prints whether the request was successful or not.

Why This Matters

This kind of API communication is used in many real-world applications, such as:

  • E-commerce: A website sends an order to a payment system.

  • Mobile apps: A food delivery app sends order details to a restaurant’s backend.

  • Cloud services: A web application saves data to a cloud database.

Conclusion

APIs are a crucial part of modern applications. In this example, Application A (Client) sends data to Application B (Server) using an API request. Application B processes the data and sends a response back. This simple example demonstrates how applications can exchange information efficiently and securely.

By understanding how APIs work, you can start building your own applications that communicate with other services!