В предыдущей статье мы говорили о микросервисной архитектуре как о подходе к разработке. В этой части предлагаю поговорить о варианте реализации API сервиса на языке PHP.
Основное требования к нашему сервису это изолированность от других сервисов — наличие собственной базы данных, работа на собственном веб-сервере.
Для примера напишем Rest API, который будет хранить и управлять нашими пользователями. Он будет иметь одну точку входа (файл index.php), а методы для работы и параметры мы будем передавать в качестве GET параметров.
Мы хотим чтобы он умел делать следующие вещи:
- По маршруту index.php?method=users.get&id=some_id — мы должны уметь получать пользователя.
- По маршруту index.php?method=users.create&name=some_name&login=some_login&password=some_password мы должны иметь возможность создать пользователя
- По маршруту index.php?method=users.update&id=some_id&name=some_name&login=some_login&password=some_password мы должны иметь возможность обновить информацию о нем
- По маршруту index.php?method=users.delete?id=some_id мы сможем удалять нашего пользователя.
Все эти вещи мы рассматриваем пока вне контекста о безопасности, о ней мы поговорим позже.
Начнем реализацию с нашего index.php, который в базовом представлении будем содержать следующую заготовку:
Затем нам необходимо реализовать нашу модель данных, в данном случае User
Это обыкновенный класс, который наследует интерфейс Jsonable, гарантирующий в классе наличие метода toJson(), содержит геттеры и сеттеры для работы с приватными полями.
Затем реализуется класс UserFactory. Его назначение — прослойка между нашим классом User (сущности) и базой данных MySQL. Суть этой прослойки в изоляции нашей сущности от того где она и как хранится.
Ну и последнее — интеграция с нашим index.php сервиса: