django -rest-framework: Обработка бизнес-логи c и что вернуть? - PullRequest
0 голосов
/ 18 июня 2020

В моем API можно отправить «Родитель» с 1 дочерним элементом. Это обычный вариант использования. При вводе родительского элемента вы всегда вводите хотя бы одного дочернего элемента. То же самое и в пользовательском интерфейсе. Может быть случай, когда пользователь захочет ввести повторяющегося родителя, например. он уже существует в системе. В этом случае в пользовательском интерфейсе пользователь может выбрать, действительно ли он хочет добавить дубликат или он хочет добавить дочерний элемент к одной из существующих «дублирующих» записей. Надеюсь, это было достаточно ясно.

У меня вопрос, как я могу сделать аналогичный «рабочий процесс» через API? После отправки дубликата он должен вернуть список возможных существующих записей, к которым можно добавить дочерний элемент. Как вернуть этот список? С каким кодом статуса? (не совсем ошибка клиента)

1 Ответ

1 голос
/ 18 июня 2020

Итак, ваш запрос выглядит примерно так:

POST /parents

{"name": "Foo", "child": { ... }}

И если «Foo» уже существует, вам нужно, чтобы клиент выбрал существующую запись и добавил туда ребенка, правильно? Тогда ответ типа этот может быть подходящим:

HTTP/1.1 409 Conflict

{
  "message": "Choose an existing parent.",
  "parents": [
    {"id": 1, ...},
    {"id": 2, ...},
    {"id": 42, ...}
  ]
}

Это требует, чтобы клиент повторил запрос примерно так:

POST /parents/42/children

{ ... }
...