Sto lavorando a un progetto e dopo aver litigato con le persone al lavoro per circa un'ora. Ho deciso di sapere cosa avrebbero potuto dire le persone in borsa.
Stiamo scrivendo un'API per un sistema, c'è una query che dovrebbe restituire un albero dell'organizzazione o un albero degli obiettivi.
L'albero dell'organizzazione è l'organizzazione in cui l'utente è presente, in altre parole, questo albero dovrebbe sempre esistere. Nell'organizzazione, dovrebbe essere sempre presente un albero degli obiettivi. (è qui che è iniziata la discussione). Nel caso in cui l'albero non esista, il mio collega ha deciso che sarebbe stato giusto rispondere alla risposta con il codice di stato 200. E poi ha iniziato a chiedermi di correggere il mio codice perché l'applicazione stava andando in pezzi quando non c'era albero.
Proverò a risparmiare fiamme e furia.
Ho suggerito di generare un errore 404 quando non è presente alcun albero. Almeno mi farebbe sapere che qualcosa non va. Quando uso 200, devo aggiungere un controllo speciale alla mia risposta nel callback di successo per gestire gli errori. Mi aspetto di ricevere un oggetto, ma potrei effettivamente ricevere una risposta vuota perché non viene trovato nulla. Sembra del tutto corretto contrassegnare la risposta come 404. E poi è iniziata la guerra e ho ricevuto il messaggio che non capivo lo schema del codice di stato HTTP. Quindi sono qui e chiedo cosa c'è che non va in 404 in questo caso? Ho anche avuto l'argomento "Non ha trovato nulla, quindi è giusto restituire 200". Credo che sia sbagliato poiché l'albero dovrebbe essere sempre presente. Se non abbiamo trovato nulla e ci aspettiamo qualcosa, dovrebbe essere un 404.
Ulteriori informazioni,
Ho dimenticato di aggiungere gli URL recuperati.
organizzazioni
/OrgTree/Get
obiettivi
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Errore mio, sono richiesti entrambi i parametri. Se viene fornita una versione di Date che può essere analizzata in una data, verrà restituita la revisione di chiusura. Se inserisci qualcosa in passato, verrà restituita la prima revisione. Se per ID con un ID che non esiste, sospetto che restituirà una risposta vuota con 200.
Extra
Inoltre, credo che la migliore risposta al problema sia creare oggetti predefiniti quando vengono create le organizzazioni, non avere un albero non dovrebbe essere un caso valido e dovrebbe essere visto come un comportamento indefinito. Non è possibile utilizzare un account senza entrambi gli alberi. Per questo motivo, dovrebbero essere sempre presenti.
anche questo mi è stato collegato (uno simile ma non riesco a trovarlo)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
tornare? Non successo, poiché la risorsa denominata non è /GoalTree/GetById?versionId=CompletelyInvalidID
stata letteralmente trovata.