L'invio di informazioni sul profilo di sistema con la richiesta HTTP GET è conforme alle pratiche RESTful?

3

Uso il framework Sparkle per aggiornare un'app e voglio sfruttare la capacità del framework di inviare informazioni sul profilo di sistema . Il modo in cui questo viene fatto è aggiungendo le informazioni alla richiesta HTTP GET che richiede il pacchetto di aggiornamento. Tuttavia, i miei colleghi mi hanno detto che è meglio riconfigurare il framework per inviare le informazioni del profilo utilizzando una richiesta HTTP POST, poiché questo è "il modo RESTful di fare le cose".

È corretto ??? Non riesco a immaginare, tuttavia, che i creatori del framework possano implementare queste richieste in un modo non conforme a RESTful pratiche, e la mia ricerca finora non ha dato una risposta definitiva.

    
posta narner 18.03.2015 - 15:36
fonte

2 risposte

3

Secondo la documentazione , le informazioni anonime sul sistema dell'utente vengono inviate con una richiesta di aggiornamento .

Direi che tecnicamente i tuoi colleghi hanno ragione. Questa informazione non sembra essere utilizzata per influenzare la risposta alla richiesta, quindi non appartiene veramente lì. Un modo migliore per inviare tali informazioni sarà probabilmente a POST in una risorsa separata, ad esempio /systemProfile o simile.

Se vuoi essere severo riguardo alla conformità a REST, potresti cercare di riconfigurare il framework per fornire le informazioni sul profilo di sistema in questo modo, ma non ne verrei mai troppo attaccato. Se il framework è utile e questo è il modo in cui fornisce le informazioni del profilo al back-end, la polizia REST non ha intenzione di sfondare la porta.

    
risposta data 18.03.2015 - 16:47
fonte
3

RFC 7231, Sezione 4.3.1 :

A payload within a GET request message has no defined semantics;
sending a payload body on a GET request might cause some existing
implementations to reject the request.

Quindi, in breve, l'invio di un carico utile è effettivamente errato. Per quanto riguarda REST, utilizza POST se crei un elemento e PATCH per aggiornamenti parziali o PUT per gli aggiornamenti completi (anche se questo non è impostato su pietra e molte persone se la cavano solo usando PUT).

Aggiornamento basato sui commenti:

L'aggiornamento di un oggetto, sia tramite il corpo della richiesta che i parametri GET, non è RESTful. Un servizio RESTful si attiene alla semantica HTTP.

The GET method requests transfer of a current selected representation for the target resource.

GET ha lo scopo di restituire una rappresentazione dello stato attuale di una risorsa, non di apportare modifiche ad esso.

    
risposta data 18.03.2015 - 15:58
fonte

Leggi altre domande sui tag