restful api development with symfony2
TRANSCRIPT
![Page 1: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/1.jpg)
RESTful API development with Symfony2
![Page 2: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/2.jpg)
www.apibest.com 2
Тарас Омельяненко
О докладчике
- APIBEST, CEO, Co-founder - ThinkPHP community,
Co-organizer - Architect - Full Stack developer - DevOps
![Page 3: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/3.jpg)
www.apibest.com 3
План доклада
• Проектирование API • Документирование API • Какие бандлы используются для ускорения разработки? • Внутрення структура приложения (типичная и рекомендуемая) • Валидация и сериализация моделей • Тестирование API
![Page 5: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/5.jpg)
www.apibest.com 5
Обмен данными
Стороннее приложение
Запрос
Ответ
RESTful APIID: 2
ID: 1
ID: 3
ID: x
.
.
.
Коллекция объектов
Слой работы с данными
![Page 6: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/6.jpg)
www.apibest.com 6
5 признаков качественного API
Семантическое
Документированное
Стабильное
Быстрое
Расширяемое
![Page 7: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/7.jpg)
www.apibest.com 7
Документация
НАЗВАНИЕ МЕТОДА
Описание клиентской и серверной логики которые взаимодействуют с данным методом
Унифицированный идентификатор ресурса (URI)
Фильтры
Модель запроса Модель ответа
HTTP Коди
![Page 8: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/8.jpg)
www.apibest.com 8
ID: 2
ID: 1
ID: 3
ID: x
.
.
.
Коллекция
Слой работы с данными
Семантическое
GET /labels.json?color=green
HTTP заголовки
Тело запроса
Запрос
HTTP заголовки
Тело запроса Ответ
![Page 9: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/9.jpg)
www.apibest.com 9
Документациядолжна генерироваться на основе кода
Smartresponder Facebook Swagger
![Page 10: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/10.jpg)
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
![Page 12: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/12.jpg)
www.apibest.com 12
≈ 2329 мсEntity
Быстрое
≈ 84 мсData Transfer Object x 27
Data Transfer Object
![Page 13: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/13.jpg)
www.apibest.com 13
Расширяемое
Масштабированное
Версионное
Структурированное
Понятное
![Page 14: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/14.jpg)
www.apibest.com 14
Code reviewДавайте посмотрим что там под капотом
Структура проекта ТестыData Transfer Object
![Page 15: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/15.jpg)
www.apibest.com 15
Code review
1 PHP2 MySQL3 Symfony 24 Swagger5 Codeception
![Page 16: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/16.jpg)
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
![Page 17: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/17.jpg)
В о п р о с ы ?
![Page 18: RESTful API development with Symfony2](https://reader033.vdocuments.net/reader033/viewer/2022042520/58ef23fa1a28ab991d8b46f1/html5/thumbnails/18.jpg)
Сп а с и б о з а в н и м а н и е !
+380 94 710 26 35
www.apibest.com [email protected]
Skype: taras.omelyanenko