Quando utilizzo un'API, come client devo gestire casi "riusciti" diversi dai casi di "errore"; Non ho scelta lì. Pertanto, si dovrebbe restituire un errore in situazioni che il client vuole trattare in modo diverso, e il successo in situazioni che il client desidera trattare lo stesso.
Se faccio una query che in teoria potrebbe restituire un numero qualsiasi di risultati, zero, uno, duecento e così via, allora dovresti restituire "successo" ogni volta che l'API fornisce l'elenco completo di tutti i risultati. E possibilmente nei casi in cui ci sono molti risultati, hai restituito un elenco parziale di risultati per evitare una dimensione eccessiva, e c'è un modo concordato su come ottenere gli altri risultati. Questo perché, come cliente, spesso voglio gestire il caso di risultati zero come nel caso di più risultati. Potrei trattarlo in modo diverso, ma non voglio essere costretto a farlo.
È diverso nel caso in cui cerco un valore. Mi aspetto esattamente un risultato, il valore che sto cercando. E ho bisogno di quell'unico risultato per continuare quello che voglio fare in modo significativo. In questo caso è molto più accettabile restituire uno stato 404 nel caso in cui non ci sia alcun valore, perché devo comunque gestire il caso in modo diverso.
Riepilogo: se il cliente si aspetta un numero qualsiasi di risultati, da zero a numeri grandi, restituisce "successo" se tutti i risultati vengono consegnati, anche se il numero è zero. Se il cliente si aspetta esattamente un risultato, restituisce il successo se viene trovato il risultato e un errore se il risultato non viene trovato.