Как интегрировать две системы с помощью REST API на 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()).

Ответ 18+ 🔞

Слушай, а вот эта ваша интеграция через REST API — это ж, блядь, как в столовке: все всё знают, все этим пользуются, но половина всё равно в тарелку плюёт. Самый распространённый способ, да. Основан на стандартных методах — 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-приложения!")

Видишь? Всё просто, как три копейки. Берём библиотеку requests, хуяк — POST-запрос, и полетело. Главное — токен не потерять, а то бот твой будет как манда с ушами: есть, а толку ноль.

Ключевые шаги и аспекты интеграции, или «где нас обычно наёбывают»:

  1. Изучение документации API: Это, блядь, святое. Надо понять, куда стучаться, как стучаться и что тебе в ответ плюнут. Если не разберёшься — будешь как Герасим из «Муму»: «Мууу!», а тебе в ответ — 404 Not Found.
  2. Аутентификация: В примере токен в URL засунули. Бывает и по-другому — ключи в заголовках (Authorization: Api-Key ...) или эта ёбанная OAuth 2.0, от которой волосы дыбом встают. Без ключа — ты никто, звать тебя никак.
  3. Формирование запроса: Тут главное — не накосячить. Правильные заголовки, тело запроса (payload) в нужном формате. Библиотека requests — наш верный пёс, без неё никуда.
  4. Обработка ответа и ошибок: А вот это, сука, самое важное! Ты должен смотреть на статус-код. 200 — ура, всё пиздато. 401 — пошёл нахуй, не авторизован. 500 — у них там всё упало, сиди жди. Оборачивай всё в try...except, как в тёплое одеяло, а то вылетит ошибка — и приложение твоё накрылось медным тазом. response.raise_for_status() — это как сторожевой пёс, который гавкнет, если что не так.

Вот и вся интеграция. Сложного ничего нет, главное — не торопиться и читать, что тебе пишут в ответ, а не тыкаться как слепой кот в подвале.