Ответ
API (Application Programming Interface) — это набор четко определенных правил, протоколов и инструментов, который позволяет различным программным компонентам взаимодействовать друг с другом. API определяет, какие запросы можно делать, как их формировать, какие данные передавать и что ожидать в ответ.
Ключевая идея: API абстрагирует внутреннюю реализацию сервиса, предоставляя внешний контракт для взаимодействия.
Пример HTTP-запроса к REST API на Python:
import requests
# GET-запрос для получения данных
response = requests.get('https://api.example.com/users/1')
if response.status_code == 200:
user_data = response.json() # Ответ в формате JSON
print(f"User: {user_data['name']}")
else:
print(f'Error: {response.status_code}')
Основные типы API:
- REST (Representational State Transfer): Использует стандартные HTTP-методы (GET, POST, PUT, DELETE). Данные обычно в JSON. Самый распространенный стиль для веб-сервисов.
- GraphQL: Позволяет клиенту точно запрашивать только нужные данные в одном запросе, избегая недополучения или переполучения информации.
- SOAP (Simple Object Access Protocol): Основан на XML, имеет строгую спецификацию (WSDL) и встроенные механизмы безопасности, но более сложен и «тяжел».
Для QA-инженера важно тестировать:
- Валидность ответов: Соответствие схеме (JSON Schema), типы данных.
- Статус-коды: Корректность возвращаемых кодов (200, 201, 400, 404, 500).
- Обработку ошибок: Читаемые и безопасные сообщения об ошибках.
- Авторизацию и аутентификацию: Работу с токенами (JWT, OAuth), API-ключами.
- Производительность: Время отклика, нагрузочное тестирование.
- Idempotency (идемпотентность): Повторный идентичный запрос (например, PUT, DELETE) не должен вызывать дополнительных side-эффектов.