REST, Ajax e jQuery possono funzionare bene insieme?

1

Sto provando a utilizzare REST (usign spring MVC) come backend Ajax, ma ho riscontrato dei problemi quando lo utilizzo con jQuery. Le migliori pratiche REST consigliano di utilizzare il codice di stato HTTP, ad es. 200, 403, 401, ecc. E non ho alcun problema con un codice di stato di 200, il metodo ajax di jQuery ha un callback fatto (dati) che mi permette di leggere la risposta in formato json. Ma quando ho bisogno di restituire qualche errore in formato JSON insieme al codice di stato, sono stato bloccato. Il callback di fail (jqXHR, textStatus) non sembra supportare json nella risposta. Quindi, se restituisco JSON dal lato server, verrà inserito in jqXHR.reponseText e verrà trattato come testo normale.

Quindi la mia domanda è: REST è buono per l'Ajax? Perché jQuery tratta i dati in modo diverso in caso di codice di stato non 200?

    
posta dnang 06.10.2013 - 10:54
fonte

2 risposte

3

È molto comune usare REST in combinazione con Ajax.

Questo non ha molto a che fare con REST o qualsiasi altra architettura. L'utilizzo del codice di stato HTTP corretto in caso di errori dovrebbe comunque essere la raccomandazione (potrebbero tuttavia esserci delle eccezioni di cui non sono a conoscenza).

Non so perché il team di jQuery abbia deciso di gestirlo in questo modo, ma potrebbe aver semplicemente deciso che in caso di successo il valore restituito è ben definito mentre in caso di errore potrebbe essere qualsiasi cosa (un semplice messaggio di testo essere una scelta).

In ogni caso è possibile analizzare il messaggio manualmente se si decide di restituire JSON in questo modo:

var msg = $.parseJSON(err).msg;
    
risposta data 06.10.2013 - 12:07
fonte
1

1) In realtà, invece di usare l'analisi jQuery, puoi usare il parser JSON Javascript in stock semplicemente con var object = JSON.parse(test) in luoghi in cui non hai già un oggetto analizzato.

2) Assicurati che il tuo server restituisca un mimetype corretto application/json in altri codici di errore.

3) Non è sbagliato scrivere la tua piccola lib AJAX. jQuery non sta facendo nulla di speciale. Alcuni suggerimenti sono forniti in altre domande. link

    
risposta data 06.10.2013 - 13:27
fonte

Leggi altre domande sui tag