Как интегрировать две системы с помощью REST API на Python

«Как интегрировать две системы с помощью REST API на Python» — вопрос из категории Архитектура, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Интеграция через REST API — один из самых распространенных способов взаимодействия между системами. Она основана на стандартных HTTP-методах (GET, POST, PUT, DELETE) и обмене данными в формате JSON.

Пример: Отправка уведомлений в Telegram

В этом примере наше приложение (система 1) интегрируется с Telegram API (система 2) для отправки сообщений.

import requests
import os

def send_telegram_message(bot_token: str, chat_id: str, text: str):
    """Отправляет сообщение в Telegram чат через Bot API."""
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    payload = {
        "chat_id": chat_id,
        "text": text,
        "parse_mode": "Markdown" # Опционально, для форматирования
    }
    try:
        response = requests.post(url, json=payload)
        response.raise_for_status()  # Вызовет исключение для HTTP-ошибок (4xx или 5xx)
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"Ошибка при отправке запроса: {e}")
        return None

# Пример использования
# BOT_TOKEN и CHAT_ID лучше хранить в переменных окружения
BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "ВАШ_ТОКЕН")
CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "ВАШ_CHAT_ID")

if BOT_TOKEN != "ВАШ_ТОКЕН":
    send_telegram_message(BOT_TOKEN, CHAT_ID, "*Привет* из Python-приложения!")

Ключевые шаги и аспекты интеграции:

  1. Изучение документации API: Необходимо понять эндпоинты, методы, форматы запросов и ответов целевой системы.
  2. Аутентификация: В примере используется токен (bot_token), который передается в URL. Другие популярные методы — API-ключи в заголовках (Authorization: Api-Key ...) или OAuth 2.0.
  3. Формирование запроса: Создание HTTP-запроса с правильными заголовками, телом (payload) и параметрами. Библиотека requests в Python идеально подходит для этого.
  4. Обработка ответа и ошибок: Важно анализировать HTTP-статус код (200 OK, 401 Unauthorized и т.д.) и реализовывать логику для случаев, когда API недоступно или возвращает ошибку (try...except и response.raise_for_status()).