Sto costruendo un'app che è stata progettata come un'app server Rails che fornisce API RESTful al client. Il server Rails utilizza RABL. Il client è un client Angular JS che esegue chiamate $ http standard (gets, puts, ecc.).Ricerca di un paradigma da utilizzare per la gestione degli errori generici in Angular da una risposta JSON da Rails
Occasionalmente il mio server Rails produrrà un errore (diciamo errore di convalida allegato all'oggetto) o addirittura nessun errore, nel qual caso vorrei visualizzare qualcosa all'utente - o il errror es. "Il record non ha salvato perché ... "o" Il record è stato aggiornato correttamente ".
Sto tentando di mappare uno schema sul lato Rails e sul lato Angular/client per gestirlo.
Per quanto riguarda Rails:
- posso certamente passare di nuovo un nodo in ciascuno dei miei file Rabl a contenere le matrici di errore
- posso anche restituire Rabl diverso controllando nel controller prima di tornare
- La maggior parte consiglia di utilizzare i codici http (che ha senso) come da here (anche se non sembra esserci un uso coerente dei codici per qualcosa come un errore di convalida).
Per quanto riguarda angolare:
- suppongo di poter scrivere un response interceptor ma non è sicuro come sarebbe completamente ottenere eliminati.
Immagino che spero di non dover reinventare la ruota qui e qualcuno possa indicarmi un modello che è attualmente utilizzato e suggerito (e localizzato).
Mi piace molto questa architettura, ma c'è una cosa che suggerirei di migliorarla. Se si restituisce l'oggetto originale nel payload dei dati, il client lo reimposterà allo stato in cui si trova nel server, quindi se si seleziona una casella e non si riesce a salvare, verrà nuovamente deselezionata quando la richiesta non riuscita ritorna . Angolare lo fa automaticamente. Quindi vorrei suggerire non * solo * inviare gli errori indietro ma l'oggetto originale + un messaggio di errore che viene visualizzato In questo modo il client avrà una versione coerente dei dati del server + il messaggio di errore –
Spiacente, tanto per essere chiari, il i dati rilegati nella pagina verranno automaticamente aggiornati quando utilizzi $ risorse - ovviamente questo potrebbe non essere il caso se stai utilizzando direttamente il servizio $ http –