Правильное использование сервисного слоя

Обсуждаем, как правильно строить приложения
Ответить
vuylov.d
Сообщения: 9
Зарегистрирован: 2017.04.17, 15:51

Правильное использование сервисного слоя

Сообщение vuylov.d »

Добрый день, форумчане. Возник следующий вопрос по архитектуре при разработке REST. Через API есть возможность создания и редактирования заданий. У задания есть несколько статусов и в зависимости от статуса можно редактировать только определенный набор полей. В прошлой версии этот момент решался сценариями, но сейчас пытаюсь использовать сервисной слой. Соответственно как лучше и где обрабатывать данный момент?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Правильное использование сервисного слоя

Сообщение zelenin »

создай ресурс /entity/<id>/status и его меняй - на другом конце провода сервис, апдейтящий одно поле.
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Правильное использование сервисного слоя

Сообщение SiZE »

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

POST /task/<id>
{
    "status": <status>
}

204 No Content
и что то вроде:

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

$form = (new TaskStatusUpdateForm($id))->load(Yii::$app->request->getBodyParams(), '');
if ($form->validate()) {
   new TaskStatusUpdateService($form);
}
vuylov.d
Сообщения: 9
Зарегистрирован: 2017.04.17, 15:51

Re: Правильное использование сервисного слоя

Сообщение vuylov.d »

Я может не совсем правильно описал условия, но дело не в изменении статуса, а в том, что при разных статусах должны обрабатываться разные атрибуту сущности задание.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Правильное использование сервисного слоя

Сообщение ElisDN »

POST /tasks/5/begin {date}
POST /tasks/5/assign {date, userId}
POST /tasks/5/cancel {date, reason}
POST /tasks/5/complete {date}
Ответить