Ich arbeite an einem Projekt und nachdem ich mich mehr als eine Stunde mit Leuten bei der Arbeit gestritten habe. Ich entschied mich zu wissen, was die Leute auf Stack-Exchange sagen könnten.
Wir schreiben eine API für ein System. Es gibt eine Abfrage, die einen Baum der Organisation oder einen Baum der Ziele zurückgeben soll.
Der Baum der Organisation ist die Organisation, in der sich der Benutzer befindet. Mit anderen Worten, dieser Baum sollte immer vorhanden sein. In der Organisation sollte immer ein Zielbaum vorhanden sein. (Hier hat das Argument angefangen). Für den Fall, dass der Baum nicht vorhanden ist, entschied mein Mitarbeiter, dass es richtig wäre, die Antwort mit dem Statuscode 200 zu beantworten. Dann bat er mich, den Code zu korrigieren, da die Anwendung auseinanderfiel, wenn es keinen Baum gab.
Ich werde versuchen, Flammen und Wut zu ersparen.
Ich schlug vor, einen 404-Fehler auszulösen, wenn kein Baum vorhanden ist. Zumindest würde es mich wissen lassen, dass etwas nicht stimmt. Bei der Verwendung von 200 muss ich meine Antwort im Erfolgs-Callback besonders prüfen, um Fehler zu behandeln. Ich erwarte, ein Objekt zu erhalten, erhalte jedoch möglicherweise eine leere Antwort, da nichts gefunden wird. Es klingt absolut fair, die Antwort als 404 zu markieren. Dann begann der Krieg und ich bekam die Nachricht, dass ich das HTTP-Statuscode-Schema nicht verstanden habe. Ich bin also hier und frage, was in diesem Fall mit 404 nicht stimmt. Ich habe sogar das Argument "Es hat nichts gefunden , also ist es richtig, 200 zurückzugeben". Ich glaube, dass es falsch ist, da der Baum immer vorhanden sein sollte. Wenn wir nichts gefunden haben und etwas erwarten, sollte es ein 404 sein.
Mehr Info,
Ich habe vergessen, die abgerufenen URLs hinzuzufügen.
Organisationen
/OrgTree/Get
Tore
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Mein Fehler, beide Parameter sind erforderlich. Wenn ein versionDate angegeben wird, das auf ein Datum analysiert werden kann, wird die geschlossene Revision zurückgegeben. Wenn Sie etwas in der Vergangenheit eingeben, wird die erste Revision zurückgegeben. Wenn von ID mit einer ID, die nicht vorhanden ist, ich vermute, es wird eine leere Antwort mit 200 zurückgeben.
Extra
Ich glaube auch, dass die beste Antwort auf das Problem darin besteht, Standardobjekte zu erstellen, wenn Organisationen erstellt werden. Wenn kein Baum vorhanden ist, sollte dies kein gültiger Fall sein und als undefiniertes Verhalten angesehen werden. Ohne beide Bäume kann ein Konto nicht verwendet werden. Aus diesem Grund sollten sie immer präsent sein.
Auch ich habe dies verlinkt (eine ähnliche, aber ich kann es nicht finden)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
zurückkehren? Kein Erfolg, da die angegebene Ressource /GoalTree/GetById?versionId=CompletelyInvalidID
buchstäblich nicht gefunden wurde.