Я працюю над проектом і після сперечаюся з людьми на роботі близько години. Я вирішив знати, що можуть говорити люди на обміні стеками.
Ми пишемо API для системи, є запит, який повинен повернути дерево організації або дерево цілей.
Дерево організації - це організація, в якій присутній користувач. Іншими словами, це дерево завжди має існувати. В організації завжди повинно бути дерево цілі. (саме тут і почався аргумент). У випадку, коли дерева не існує, мій колега вирішив, що було б правильно відповісти на відповідь з кодом статусу 200. А потім почав просити мене виправити код, оскільки програма розпадалася, коли дерева немає.
Я спробую пощадити полум'я і лють.
Я запропонував підняти помилку 404, коли немає дерева. Хоча б мені дали знати, що щось не так. Під час використання 200 я повинен додати спеціальну перевірку до своєї відповіді на зворотній виклик успіху для обробки помилок. Я сподіваюся отримати об’єкт, але, можливо, я отримаю порожню відповідь, тому що нічого не знайдено. Цілком справедливо звучить відповідь як 404. І тоді почалася війна, і я отримав повідомлення про те, що я не розумію схему коду статусу HTTP. Тож я тут і запитую, що з цим 404 не так? У мене навіть з’явився аргумент « Нічого не знайшли , тому правильно повернути 200». Я вважаю, що це неправильно, оскільки дерево повинно бути завжди присутнє. Якщо ми нічого не знайшли і чогось очікуємо, це має бути 404.
Більше інформації,
Я забув додати отримані URL-адреси.
Організації
/OrgTree/Get
Цілі
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Моя помилка, обидва параметра потрібні. Якщо надана будь-яка версіяDate, яку можна проаналізувати на дату, вона поверне закриту редакцію. Якщо ви введете щось у минулому, воно поверне першу редакцію. Якщо за Id з ідентифікатором, який не існує, я підозрюю, що він поверне порожню відповідь із 200.
Додатково
Крім того, я вважаю, що найкраща відповідь на проблему полягає у створенні об'єктів за замовчуванням, коли створюються організації, оскільки дерево не повинно бути дійсним випадком, і його слід розглядати як невизначене поведінку. Не можна використовувати рахунок без обох дерев. З цієї причини вони повинні бути присутніми завжди.
також я пов’язав це (один подібний, але я не можу його знайти)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
повернути? Не успіх, так як названий ресурс /GoalTree/GetById?versionId=CompletelyInvalidID
буквально не був знайдений.