Раньше возвращал 200 и писал «ошибочку» руками, и клиент не понимал. Наткнулся на принцип «говори кодом», злился на себя за бездумность и сел разбирать: что значат 201, 400, 404, 500. Оказалось — это язык, на котором сервер общается с клиентом.
Нейтрально: статус — сжатая сводка результата. 201 — создано, 400/422 — невалидный запрос, 404 — не найдено, 500 — ошибка сервера. Корректный код избавляет клиента от угадывания.
from django.http import JsonResponse
def create_item(request):
# ... валидация и создание obj
return JsonResponse({"id": obj.id}, status=201)
def not_found(request, pk):
return JsonResponse({"error": "не найдено"}, status=404)
После разбора прошёлся по петам и заменил «что-то верну» на честные статусы. Мелочь сделала API предсказуемыми. Ощущение — будто выучил вежливость сервера.