Non ho mai visto alcuna API che lascia il client in sospeso in caso di errore. A meno che tu non abbia un caso molto specifico in cui ciò ha senso ¹ Questo semplicemente non ha senso, e tale comportamento comporterebbe solo un'API praticamente inutilizzabile:
-
Questo rallenterebbe lo sviluppo delle applicazioni client. A meno che non legga molto, molto attentamente la documentazione (e la documentazione è eccellente), farò degli errori che potrebbero causare timeout e quindi rallentare lo sviluppo.
-
Ciò renderebbe anche le app client lente se causano eccezioni quando vengono utilizzate da un utente finale.
Quindi no, non farlo .
Quello che dovresti fare è gestire l'errore con grazia. Questo significa inviare una risposta contenente:
-
Un codice HTTP specifico, come 404, 403, 500, ecc.
-
Il dettaglio che spiega cosa è successo. Di solito, questa non dovrebbe essere l'eccezione in sé, dal momento che potrebbe contenere informazioni riservate e potresti voler fornire qualcosa di più comprensibile ai tuoi utenti.
-
Alla fine il codice interno. Questo può aiutare quando si fornisce supporto. "Ho provato ad accedere all'elenco dei prodotti e ho ottenuto l'errore 7016." è più breve da dire al supporto di "Ho provato ad accedere all'elenco dei prodotti e ho ottenuto l'errore" La categoria manca nella richiesta. Quando si esegue una query per l'elenco di prodotti, è necessario fornire la categoria. "".
-
Alla fine il link alla pagina web del tuo sito web che contiene documentazione aggiuntiva, esempi e soluzioni alternative.
Esempio:
HTTP 404
{
"error": "The category is missing in the request. When querying for the list of products
, the category should be provided.",
"code": 7016,
"help": "http://api.example.com/docs/errors/7016"
}
La pagina link spiega ulteriormente come evitare questo errore, ovvero quale parametro GET o POST dovrebbe essere utilizzato in la richiesta di specificare l'identificatore della categoria.
¹ Posso immaginare due casi: un'API super sicura che deve impedire agli utenti di tentare di romperla e un'API che vuole impedire DDOS. Nel primo caso, sembra un modo debole per proteggere qualsiasi cosa. Nel secondo caso, appendere senza rispondere non impedirà al client di inviare altre richieste nel frattempo.