Я работаю над проектом и после споров с людьми на работе более часа. Я решил узнать, что могут сказать люди на стек-обмене.
Мы пишем API для системы, есть запрос, который должен возвращать дерево организации или дерево целей.
Дерево организации - это организация, в которой присутствует пользователь. Другими словами, это дерево должно существовать всегда. В организации дерево цели должно присутствовать всегда. (вот где начался спор). В случае, когда дерево не существует, мой коллега решил, что было бы правильно ответить на ответ с кодом состояния 200. И затем начал просить меня исправить мой код, потому что приложение разваливалось, когда нет дерева.
Я постараюсь пощадить пламя и ярость.
Я предложил поднять ошибку 404, когда нет дерева. По крайней мере, это дало бы мне знать, что что-то не так. При использовании 200 я должен добавить специальную проверку к моему ответу в обратном вызове успеха, чтобы обработать ошибки. Я ожидаю получить объект, но на самом деле я могу получить пустой ответ, потому что ничего не найдено. Звучит совершенно справедливо, если мы отмечаем ответ 404. И затем началась война, и я получил сообщение, что не понимаю схему кода состояния HTTP. Вот я и спрашиваю, что не так с 404 в этом случае? Я даже получил аргумент «Ничего не нашел , поэтому правильно вернуть 200». Я считаю, что это неправильно, поскольку дерево должно присутствовать всегда. Если мы ничего не нашли и ожидаем чего-то, это должен быть 404.
Больше информации,
Я забыл добавить выбранные URL-адреса.
организации
/OrgTree/Get
цели
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Моя ошибка, оба параметра обязательны. Если предоставляется какая-либо версия versionDate, которую можно проанализировать на определенную дату, она вернет закрытую ревизию. Если вы введете что-то в прошлом, он вернет первую ревизию. Если по идентификатору с идентификатором, который не существует, я подозреваю, что он вернет пустой ответ с 200.
дополнительный
Кроме того, я считаю, что лучшим ответом на проблему является создание объектов по умолчанию при создании организаций, поскольку отсутствие дерева не должно быть допустимым случаем и должно рассматриваться как неопределенное поведение. Невозможно использовать учетную запись без обоих деревьев. По этим причинам они должны присутствовать всегда.
также я связал это (один подобный, но я не могу найти это)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
вернуться? Не удалось, так как названный ресурс /GoalTree/GetById?versionId=CompletelyInvalidID
был буквально не найден.