RESTful API development with Symfony2
www.apibest.com 2
Тарас Омельяненко
О докладчике
- APIBEST, CEO, Co-founder - ThinkPHP community,
Co-organizer - Architect - Full Stack developer - DevOps
www.apibest.com 3
План доклада
• Проектирование API • Документирование API • Какие бандлы используются для ускорения разработки? • Внутрення структура приложения (типичная и рекомендуемая) • Валидация и сериализация моделей • Тестирование API
www.apibest.com 5
Обмен данными
Стороннее приложение
Запрос
Ответ
RESTful APIID: 2
ID: 1
ID: 3
ID: x
.
.
.
Коллекция объектов
Слой работы с данными
www.apibest.com 6
5 признаков качественного API
Семантическое
Документированное
Стабильное
Быстрое
Расширяемое
www.apibest.com 7
Документация
НАЗВАНИЕ МЕТОДА
Описание клиентской и серверной логики которые взаимодействуют с данным методом
Унифицированный идентификатор ресурса (URI)
Фильтры
Модель запроса Модель ответа
HTTP Коди
www.apibest.com 8
ID: 2
ID: 1
ID: 3
ID: x
.
.
.
Коллекция
Слой работы с данными
Семантическое
GET /labels.json?color=green
HTTP заголовки
Тело запроса
Запрос
HTTP заголовки
Тело запроса Ответ
www.apibest.com 9
Документациядолжна генерироваться на основе кода
Smartresponder Facebook Swagger
www.apibest.com 10
Примеры семантических URI
GET /api/v1/labels.json GET /api/v1/labels/{labelId}.json POST /api/v1/labels.json PUT /api/v1/labels/{labelId}.json PATCH /api/v1/labels/{labelId}.json DELETE /api/v1/labels/{labelId}.json
www.apibest.com 12
≈ 2329 мсEntity
Быстрое
≈ 84 мсData Transfer Object x 27
Data Transfer Object
www.apibest.com 13
Расширяемое
Масштабированное
Версионное
Структурированное
Понятное
www.apibest.com 14
Code reviewДавайте посмотрим что там под капотом
Структура проекта ТестыData Transfer Object
www.apibest.com 15
Code review
1 PHP2 MySQL3 Symfony 24 Swagger5 Codeception
www.apibest.com 16
Полезные ссылки
• Принципы построения эффективного REST API http://www.slideshare.net/Geeks_Lab/16-39090807
• Enterprise Symfony Architecture http://www.slideshare.net/lisachenko/enterprise-symfony-architecture
• Classification of HTTP-based APIs http://www.nordsc.com/ext/classification_of_http_based_apis.html
• HTTP Status Codes http://www.restapitutorial.com/httpstatuscodes.html
В о п р о с ы ?
Сп а с и б о з а в н и м а н и е !
+380 94 710 26 35
www.apibest.com [email protected]
Skype: taras.omelyanenko