RESTful API development with Symfony2

18
RESTful API development with Symfony2

Transcript of RESTful API development with Symfony2

Page 1: RESTful API development with Symfony2

RESTful API development with Symfony2

Page 2: RESTful API development with Symfony2

www.apibest.com 2

Тарас Омельяненко

О докладчике

- APIBEST, CEO, Co-founder - ThinkPHP community,

Co-organizer - Architect - Full Stack developer - DevOps

Page 3: RESTful API development with Symfony2

www.apibest.com 3

План доклада

• Проектирование API • Документирование API • Какие бандлы используются для ускорения разработки? • Внутрення структура приложения (типичная и рекомендуемая) • Валидация и сериализация моделей • Тестирование API

Page 4: RESTful API development with Symfony2

www.apibest.com 4

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

Page 5: RESTful API development with Symfony2

www.apibest.com 5

Обмен данными

Стороннее приложение

Запрос

Ответ

RESTful APIID: 2

ID: 1

ID: 3

ID: x

.

.

.

Коллекция объектов

Слой работы с данными

Page 6: RESTful API development with Symfony2

www.apibest.com 6

5 признаков качественного API

Семантическое

Документированное

Стабильное

Быстрое

Расширяемое

Page 7: RESTful API development with Symfony2

www.apibest.com 7

Документация

НАЗВАНИЕ МЕТОДА

Описание клиентской и серверной логики которые взаимодействуют с данным методом

Унифицированный идентификатор ресурса (URI)

Фильтры

Модель запроса Модель ответа

HTTP Коди

Page 8: RESTful API development with Symfony2

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

www.apibest.com 9

Документациядолжна генерироваться на основе кода

Smartresponder Facebook Swagger

Page 10: RESTful API development with Symfony2

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 11: RESTful API development with Symfony2

www.apibest.com 11

Стабильное

Jenkins Codeception JMeter

Page 12: RESTful API development with Symfony2

www.apibest.com 12

≈ 2329 мсEntity

Быстрое

≈ 84 мсData Transfer Object x 27

Data Transfer Object

Page 13: RESTful API development with Symfony2

www.apibest.com 13

Расширяемое

Масштабированное

Версионное

Структурированное

Понятное

Page 14: RESTful API development with Symfony2

www.apibest.com 14

Code reviewДавайте посмотрим что там под капотом

Структура проекта ТестыData Transfer Object

Page 15: RESTful API development with Symfony2

www.apibest.com 15

Code review

1 PHP2 MySQL3 Symfony 24 Swagger5 Codeception

Page 16: RESTful API development with Symfony2

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

В о п р о с ы ?

Page 18: RESTful API development with Symfony2

Сп а с и б о з а в н и м а н и е !

+380 94 710 26 35

www.apibest.com [email protected]

Skype: taras.omelyanenko