Подтвердить что ты не робот

Что я должен делать при уничтожении записи?

У меня есть API, который позволяет уничтожать объект. Часть, на которую я не уверен, - это то, что JSON следует сделать после того, как запись была уничтожена. Вот несколько вариантов, но я не уверен, что для этого лучше всего.

Версия 1:

Возвращает пустой объект со статусом 204

def destroy
  item = current_user.current_cart.items.find(params[:id])
  item.destroy
  render json: {}, status: :no_content
end

Версия 2:

Возвращаемый элемент, даже если он был уничтожен

def destroy
  item = current_user.current_cart.items.find(params[:id])
  item.destroy
  render json: item
end

Один из них предпочтительнее другого? Есть ли версия, о которой я не думал, что может быть предпочтительнее?

4b9b3361

Ответ 1

Для запроса удаления код статуса http 200 или 204 подразумевает успешное удаление ресурсов.

9.7 УДАЛИТЬ

Успешный ответ ДОЛЖЕН быть 200 (ОК), если ответ включает объект, описывающий статус, 202 (Принято), если действие еще не было принято, или 204 (Нет содержимого), если действие было принято, но ответ не включает объект.

Таким образом, вы можете либо вернуть объект с кодом состояния 200, либо получить пустой код с кодом состояния

Ответ 2

Соответственно должен быть статус успеха 204 (без содержимого). Как подразумевается в 204, не должно быть тела ответа, которое может быть достигнуто с помощью render :nothing, status: :no_content или немного более запоминающимся:

def destroy
  item.destroy
  head :no_content
end

Изменить: render :nothing устарел и удален с Rails 5.1. Вместо этого вы можете использовать render body: nil, status: :no_content.