PYTHON PROGRAMMING:Day 22: Working with APIs

Mastering day 22: working with apis concepts and implementation.

APIs (Application Programming Interfaces) allow different software applications to communicate with each other. Python makes it easy to work with APIs.

What are APIs?

An API is a set of rules and protocols that allows different software applications to communicate. It's like a waiter in a restaurant - you give your order, and they bring you food.

Types of APIs:

  • REST API - Representational State Transfer
  • GraphQL - Query language for APIs
  • SOAP - Simple Object Access Protocol
  • WebSocket - Real-time communication

HTTP Methods:

  • GET - Retrieve data
  • POST - Create new data
  • PUT - Update existing data
  • DELETE - Remove data
  • PATCH - Partial update

Working with APIs in Python:

  • requests library - Make HTTP requests
  • json library - Handle JSON data
  • urllib - Built-in HTTP client
  • httpx - Modern HTTP client

Common API Operations:

  • Authentication - Verify user identity
  • Rate Limiting - Control request frequency
  • Error Handling - Manage API errors
  • Data Parsing - Process response data
  • Pagination - Handle large datasets

Hands-on Examples

Working with APIs

# Install requests: pip install requests
import requests
import json

# GET request example
def get_weather(city):
    # Using a free weather API (example)
    url = f"https://api.openweathermap.org/data/2.5/weather"
    params = {
        'q': city,
        'appid': 'your_api_key_here',  # Replace with actual API key
        'units': 'metric'
    }
    
    try:
        response = requests.get(url, params=params)
        response.raise_for_status()  # Raise exception for bad status codes
        
        data = response.json()
        return {
            'city': data['name'],
            'temperature': data['main']['temp'],
            'description': data['weather'][0]['description']
        }
    except requests.exceptions.RequestException as e:
        return {'error': str(e)}

# POST request example
def create_user(user_data):
    url = "https://jsonplaceholder.typicode.com/users"
    
    try:
        response = requests.post(url, json=user_data)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        return {'error': str(e)}

# Working with JSON data
def process_json_data():
    # Sample JSON data
    json_data = '''
    {
        "users": [
            {"id": 1, "name": "Priya", "email": "priya@schoolabe.com"},
            {"id": 2, "name": "Marcus", "email": "marcus@schoolabe.com"}
        ]
    }
    '''
    
    # Parse JSON
    data = json.loads(json_data)
    
    # Process data
    for user in data['users']:
        print(f"User: {user['name']} ({user['email']})")
    
    # Convert Python object to JSON
    new_user = {"id": 3, "name": "Sofia", "email": "sofia@schoolabe.com"}
    json_string = json.dumps(new_user, indent=2)
    print("\nNew user JSON:")
    print(json_string)

# Test API functions
print("Processing JSON data:")
process_json_data()

This example shows how to make HTTP requests, handle JSON data, and implement proper error handling when working with APIs.