Я немного поиграл с Apigility, и есть что-то, что мне не нравится. Мой метод удаления в сопоставлении сущностей выглядит так:
public function delete($id)
{
$affectedRows = $this->table->delete(
array('userId' => $id)
);
if (0 === $affectedRows) {
throw new DomainException('ID not found', 500);
}
return $affectedRows;
}
И в соответствующих ресурсах сущности я получил:
public function delete($id)
{
$affectedRows = $this->mapper->delete($id);
return new ApiProblem(200, 'Affected rows count ' . $affectedRows);
}
но я думаю, что не стоит вызывать ApiProblem для кода 200. Есть что-нибудь, что подходит для успешной операции?
application/problem+json
НЕ правильный ответ для успешной работы.
Вы должны возвращать ответ обычно с кодом состояния 200 или без ответа с кодом состояния 204.
И вы можете использовать ApiProblem, когда ресурс не найден.
Как примечание: исключение домена не подходит для условий выполнения, оно обычно указывает на ошибку в программном обеспечении.
ApiProblem
не следует использовать в этом случае. Он должен быть возвращен только в случае проблем / ошибок.
Прочитайте ответ на StackOverflow здесь для ссылки на то, как реагировать на успешные операции удаления.