Необходимость валидации дублирующихся данных в json
REST API Метод должен принимать некий json. Стоит ли считать ошибкой валидации, если в json, который приходит на вход, происходит дублирование данных?
Пример входных данных:
{
"id": 15,
"id": 16
}
Должен быть только один id. Вопрос в том, что бэку как бы все равно, сколько дублей придет, он сможет корректно отработать запрос, взяв в обработку первый. С другой стороны, налицо, явная неоднозначность, потому что неясно, какой id фронт имел ввиду. Как будто бы - противоречие ограничению REST, когда запросы должны быть составлены таким образом, чтобы сервер однозначно мог понять, что за ресурс запрашивает клиент. Или ошибаюсь?
Ответы (1 шт):
Я бы считал ошибкой, потому что да - как минимум неоднозначность.
import json
data = """
{
"id": 15,
"id": 16
}
"""
print(json.loads(data))
# {'id': 16}
Питон заполняет словари по правилу "последующие повторяющиеся ключи перебивают предыдущие".
На английском SO есть вопрос с ответами и обсуждениями, там есть ссылки на стандарты.
Вкратце там такие выводы:
- Стандарт такое не запрещает, но и не рекомендует
- Такая структура данных порождает неоднозначность поведения:
- могут прочитаться оба ключа
- прочитается один ключ - первый
- прочитается один ключ - последний
- либо вообще может выйти ошибка библиотеки, которая будет такой
JSON
загружать.
Считать ли неопределённость в данных ошибкой валидации - это уже на ваше усмотрение. Я бы лично считал ошибкой, потому что стандарт это конечно хорошо, но его конкретные реализации такое не любят.