RESTful API development with Symfony2

Post on 21-Jan-2018

150 views 0 download

Transcript of RESTful API development with Symfony2

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 4

Проектирование

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 11

Стабильное

Jenkins Codeception JMeter

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 team@apibest.com

Skype: taras.omelyanenko