В предыдущей статье мы говорили о микросервисной архитектуре как о подходе к разработке. В этой части предлагаю поговорить о варианте реализации API сервиса на языке PHP.

Основное требования к нашему сервису это изолированность от других сервисов — наличие собственной базы данных, работа на собственном веб-сервере.

Для примера напишем Rest API, который будет хранить и управлять нашими пользователями. Он будет иметь одну точку входа (файл index.php), а методы для работы и параметры мы будем передавать в качестве GET параметров.

Мы хотим чтобы он умел делать следующие вещи:

  1. По маршруту index.php?method=users.get&id=some_id — мы должны уметь получать пользователя.
  2. По маршруту index.php?method=users.create&name=some_name&login=some_login&password=some_password мы должны иметь возможность создать пользователя
  3. По маршруту index.php?method=users.update&id=some_id&name=some_name&login=some_login&password=some_password мы должны иметь возможность обновить информацию о нем
  4. По маршруту index.php?method=users.delete?id=some_id мы сможем удалять нашего пользователя.

Все эти вещи мы рассматриваем пока вне контекста о безопасности, о ней мы поговорим позже.

Начнем реализацию с нашего index.php, который в базовом представлении будем содержать следующую заготовку:

Затем нам необходимо реализовать нашу модель данных, в данном случае User

Это обыкновенный класс, который наследует интерфейс Jsonable, гарантирующий в классе наличие метода toJson(), содержит геттеры и сеттеры для работы с приватными полями.

Затем реализуется класс UserFactory. Его назначение — прослойка между нашим классом User (сущности) и базой данных MySQL. Суть этой прослойки в изоляции нашей сущности от того где она и как хранится.

Ну и последнее — интеграция с нашим index.php сервиса: