ok lasciati andare. Citi l'url:
my-restaurant-api.com?restaurants=1,2,3
consente di correggere gli errori evidenti con questo. Prima il protocollo e le barre mancanti
https://my-restaurant-api.com/?restaurants=1,2,3
Ora consente di aggiungere un percorso, o "risorsa"
https://my-restaurant-api.com/restaurants/id=1,2,3
Ora la stringa di query è problematica. L'id non è "1,2,3" quindi la struttura corretta è:
?id=1&id=2&id=3
Ma puoi vedere come questo può facilmente incorrere in problemi di lunghezza massima dell'URL. La migliore pratica è quella di inviarlo nel corpo e quando si invia un corpo si dovrebbe essere POST. Dal momento che non esegui il POST di un ristorante, vorremmo cambiare il percorso verso qualcosa che corrisponde a ciò che stiamo cercando di fare, quindi:
POST https://my-restaurant-api.com/GetRestaurantsByIds
{
"Ids" : ["1","2","3"]
}
Solo ora possiamo iniziare a parlare di errori sensibili.
First off non usa mai 404 per indicare "hai raggiunto l'endpoint giusto ma il risultato dell'operazione era un set vuoto". Quindi questo è chiaro
Una risposta non di errore è una matrice JSON di oggetti ristorante, giusto? quindi una matrice vuota è la risposta "nulla trovata" corretta.
Ora, nel caso di risultati parziali, potremmo considerare la richiesta come una ricerca, "seleziona * dai ristoranti dove id in (...)", nel qual caso ci si aspetterebbe di restituire una risposta vuota o parziale.
O potremmo trattarlo come un comando "I miei tre migliori ristoranti sono questi!" e ci aspetteremmo un errore se ce ne fossero solo due. ad esempio
500 restaurant 3 not found, you must specify 3 restaurants
Potresti riflettere il comportamento previsto nella scelta del nome del percorso
SearchRestaurantsByID //expect 200 empty set or partial result
vs
GetCompleteRestaurantSet // expect 500 error message
Ma ovviamente la tua documentazione lo renderebbe completamente chiaro.