Алгоритм поректирования интеграции - webkoth/style-guide-php-laravel GitHub Wiki
Данный алгоритм можно использовать при каждом проектированиии API
При этом, в разном контексте API требования могут отличаться (разработка API для блокчейн-биржы отличается от API Госуслуг).
- Сбор требований: начните со сбора User Story и диаграмм бизнес-процессов, которые помогут вам понять контекст, цели и ограничения интеграции.
- Выделение функциональных требований: проанализируйте диаграммы бизнес-процессов, User Story и определите функциональные требования, необходимые для интеграции, такие как обмен данными, синхронизация или преобразование.
- Выделите важные нефункциональные требования для создания качественной интеграции.
- Учтите необходимость масштабирования, производительности и безопасности.
- Система stateless или stateful (грубо - нужно ли хранить на сервере данные о запросах, или нет?).
- Выберите подходящий архитектурный стиль и протокол.
- Рассмотрите использование REST, GraphQL или gRPC, в зависимости от вашей ситуации и предпочтений.
- Выберите подходящий протокол для передачи данных (HTTP, HTTPS, TCP, WebSockets и т.д.).
- Анализ потока данных: создайте диаграммы потоков данных, которые показывают, как данные перемещаются между системами, и определите закономерности потоков данных.
- Определите формат обмена данными (JSON, XML, Protobuf).
- Разбейте ваш API на логические ресурсы и коллекции, либо эндпоинты если это RPC технология.
- Разработка сценариев интеграции (Use Case): на основе потоков данных определите сценарии использования, которые описывают, как системы будут взаимодействовать в конкретных сценариях, обеспечивая охват всех возможных ситуаций.
- Создание диаграмм деятельности UML: сопоставьте сценарии использования с диаграммами деятельности. Унифицированного языка моделирования (UML), которые обеспечивают четкую визуализацию последовательностей действий в каждом сценарии.
- Определите методы, которые будут использоваться (для REST) и данные (параметры) запросов и ответов.
- Учтите варианты пагинации, сортировки и фильтрации данных.
- Организуйте проверку входящих данных на валидность и целостность.
- Обработка ошибок и коды состояния.
- Предоставляйте информацию об ошибках в структурированном формате (JSON, XML и т.д.).
- Безопасность и авторизация.
- Реализуйте аутентификацию и авторизацию пользователей (OAuth, API ключи, JWT и т.д.).
- Защитите ваш API от распространенных угроз и атак (SQL-инъекции, XSS, CSRF и т.д.).
- Учтите применение политик безопасности (CORS, Content Security Policy и т.д.).
- Рассмотрите инструменты управления производительностью, кеширование, rate limit.
- Версионирование API.
- Планируйте изменения и обновления API, предусматривая версионирование.
- Используйте соглашения по именованию версий в URL или заголовках запросов.
- Документация.
- Создайте четкую и понятную документацию для вашего API, описывающую методы, параметры, коды состояния и ошибки и всю другую необходимую информацию. Также приложит примеры запросов и ответов.
- Задокументируйте ваш веб-сервис.
- Обратная связь и поддержка.
- Обеспечьте каналы связи для получения обратной связи от пользователей и разработчиков, использующих ваш API.
- На основе отзывов улучшайте ваше API.
- Настройте мониторинг вашего работающего API, чтобы быстро получать информацию о проблемах.