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

Всё что касается построения API
Ответить
kolotek
Сообщения: 13
Зарегистрирован: 2017.06.27, 20:16

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

Сообщение kolotek »

Подскажите, как вы организовываете сервисный слой в REST API?

Так как во главе REST API на Yii стоит ActiveRecord, котороя принимает данные, валидирует, сохраняет и выступает в роли ресурса, то что в этой ситуации должен делать сервис?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN »

kolotek писал(а): 2018.04.25, 18:56 Так как во главе REST API на Yii стоит ActiveRecord, котороя принимает данные, валидирует, сохраняет и выступает в роли ресурса
Поэтому и разделяют на части по ответственностям. Чтобы принимала и валидировала модель ввода, юзкейсы реализоаали прикладные сераисы, заполнялась и сохранялась ActiveRecord, ресурсом выступали ресурсы-сериализаторы.
kolotek
Сообщения: 13
Зарегистрирован: 2017.06.27, 20:16

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

Сообщение 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());
}
Ответить