Ho un'azione create
in un gioco! controller di framework che dovrebbe restituire il codice di stato HTTP Created
e reindirizzare il client nella posizione dell'oggetto creato.Restituisce lo stato HTTP "creato" in Play! Framework
public class SomeController extends Controller {
public static void create() {
Something something = new Something();
something.save();
response.status = StatusCode.CREATED; // Doesn't work!
show(something.id);
}
public static void show(long id) {
render(Something.findById(id));
}
}
Vedere anche method chaining in the Play! framework documentation.
Il codice sopra riportato restituisce il codice di stato 302 Found
anziché 201 Created
. Cosa posso fare per consentire a Play di restituire lo stato corretto (e l'intestazione Location
)?
'201 Created' devono essere inviate insieme ad un colpo di testa' location' che non sarebbe successo con la soluzione 2. Potrebbe spiegare la soluzione 1, non capisco vero? – deamon
La soluzione 1 non è buona. In pratica si dice, dopo che la richiesta è stata creata, quindi richiesta show(), quindi il tuo flusso è deciso lato client (cioè javascript), piuttosto che serveride nella tua azione. – Codemwnci
Ho controllato il codice sorgente per Play (1.2.3) e l'oggetto Redirect, ha un codice, che è predefinito a 302. Ha un costruttore per offrire un codice diverso, ma questo costruttore non sembra essere usato nel struttura. – Codemwnci