2012-10-17 12 views
7

Domanda semplice: cosa succede se NON sto inviando dati (contenuto) tramite il metodo HTTP POST/PUT sulla mia risorsa - è ancora RESTful?PUT senza dati, è RESTful?

Ovviamente, la domanda è in che caso vorrei utilizzare PUT senza dati. Immagina un utente che vuole reimpostare la sua password (come in this older topic).

Cosa ne pensi? Va bene NON inviare contenuti con metodi POST/PUT? Personalmente non ho problemi, ma sono solo curioso di sapere cosa direbbero gli altri.

risposta

5

Sì, questo è perfettamente accettabile. Ogni azione (POST a una raccolta, PUT a una risorsa) se eseguita senza dati dovrebbe creare una nuova risorsa "vuota". La definizione di "vuoto" qui dipenderebbe da ciò che viene rappresentato.

Nel caso specifico di reimpostazione della password di un utente, tuttavia, non direi che si applica il modello precedente. Se c'è veramente una risorsa password, un PUT senza dati sembrerebbe suggerire di impostare la password come vuota, invece di resettarla. Per questo scenario, andrei con la risposta accettata da quella domanda.

3

Non hai bisogno di dati in un POST o PUT perché sia ​​Riposo. Se stai facendo qualcosa non è idempotente (cioè la richiesta modificherà o creerà una risorsa), non vuoi utilizzare GET (se ci sono dati da passare o meno). Ad esempio, potresti avere un servizio web RESTful che considera l'ora della richiesta e l'url della risorsa colpito come tutto ciò di cui ha bisogno per creare o modificare alcune risorse - non sono necessari dati di richiesta!