Страница 1 из 1

Сервисный слой в REST API

Добавлено: 2018.04.25, 18:56
kolotek
Подскажите, как вы организовываете сервисный слой в REST API?

Так как во главе REST API на Yii стоит ActiveRecord, котороя принимает данные, валидирует, сохраняет и выступает в роли ресурса, то что в этой ситуации должен делать сервис?

Re: Сервисный слой в REST API

Добавлено: 2018.04.25, 19:09
ElisDN
kolotek писал(а): 2018.04.25, 18:56 Так как во главе REST API на Yii стоит ActiveRecord, котороя принимает данные, валидирует, сохраняет и выступает в роли ресурса
Поэтому и разделяют на части по ответственностям. Чтобы принимала и валидировала модель ввода, юзкейсы реализоаали прикладные сераисы, заполнялась и сохранялась ActiveRecord, ресурсом выступали ресурсы-сериализаторы.

Re: Сервисный слой в REST API

Добавлено: 2018.04.25, 19:42
kolotek
ElisDN писал(а): 2018.04.25, 19:09
Поэтому и разделяют на части по ответственностям. Чтобы принимала и валидировала модель ввода, юзкейсы реализоаали прикладные сераисы, заполнялась и сохранялась ActiveRecord, ресурсом выступали ресурсы-сериализаторы.
А какие обязанности должны быть возложены на сервис? Получается, что в большинстве REST-методов он будет просто получать реквест, валидировать, записывать данные в AR и сохранять ее. Т.е. выходит, что мы будем копировать сервис из метода в метод?

Может найдется пример связки Контроллер -> Сервис -> Ресурс ?

Если правильно понимаю, то в контроллере должно быть примерно следующее, или это обязанность контроллера валидировать реквест?

Код: Выделить всё

public function actionCreate() 
{
	$request = ArticleCreateRequest::createAndLoad($data);
	$this->createArticleService->execute($request);
	
	return ArticleResource($this->createArticleService->getResult());
}