Ответ Web API, когда некоторые из вставляемых объектов дублируются - PullRequest
0 голосов
/ 17 октября 2018

Я использую Asp.net Core 2.0 Web API для создания некоторых записей базы данных в SQL Server. Я не хочу создавать дубликаты строк и хочу сообщить потребителю API, что он пытается создать дубликаты строк.,У меня есть два действия контроллера для создания этих записей, первый из которых принимает только один экземпляр object, который будет создан, а второй принимает List<object> все, что будет создано.для первого метода действия, если строка повторяется, я отвечаю с ошибкой Конфликт Http (409) , и если нет, я повторно отправляю обработанный объект обратно потребителю в ответе OK Http.

Во втором методе действия я получаю список объектов, и, возможно, некоторые из них являются дубликатами, а некоторые нет.Я пытаюсь сделать лучшую практику, добавляя неповторяющиеся записи и возвращая ошибку для дублирующих.проблема здесь в том, каков должен быть мой ответ?ОК ответ или конфликт?Более того, я хочу, чтобы потребитель знал, что объекты ведьмы созданы, а какие нет, для добавленных я хочу отправить сам объект обратно в список, а для дублирующих я хочу отправить их обратно с дублирующим флагом !.Здесь важно, чтобы встретились, чтобы получить лучшее практическое решение, а не просто сложное решение.

TL; DR Для веб-API существует метод post, создающий списокобъекты, каким должен быть ответ, когда некоторые из объектов являются дубликатами, а другие не понятны и эффективны.

1 Ответ

0 голосов
/ 17 октября 2018

Лучшие практики REST не высечены на камне, и вы можете встретить множество мнений о том, как что-то делать.Один из подходов заключается в том, что вы не предоставляете групповые операции, именно из-за проблем при составлении отчетов о результатах.

Существуют и другие способы выполнения групповых операций.Например, Facebook использует Пакетные запросы , а Google использует Многокомпонентные сообщения для пакетной обработки .

В REST вы работаете с ресурсами, поэтому ваша конечная точка POST должна создать ресурс.Вы можете просмотреть всю коллекцию предметов в качестве ресурса, но тогда он должен либо преуспеть, либо потерпеть неудачу как таковой.Сначала я проверил бы коллекцию на наличие дубликатов, и, если был найден, вернул 400 неверных данных.

...