¡Tengo una acción create
en un juego! Controlador de marco que debe devolver el código de estado HTTP Created
y redirigir al cliente a la ubicación del objeto creado.Devuelve el estado de HTTP "creado" en Play! Marco
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));
}
}
Véase también method chaining in the Play! framework documentation.
El código anterior devuelve el código de estado 302 Found
en lugar de 201 Created
. ¿Qué puedo hacer para que Play devuelva el estado correcto (y el encabezado Location
)?
'201 Created' debe enviar junto con una cabecera' Location' lo que no sucedería con solución 2. ¿Podría explicar la solución 1, que no entiendo ¿eso? – deamon
La solución 1 no es buena. Básicamente se trata de decir, después de crear su solicitud, luego solicitar show(), por lo que su flujo se decide desde el lado del cliente (es decir, javascript), en lugar de desde el servidor en su acción. – Codemwnci
He comprobado el código fuente para Play (1.2.3) y el objeto Redirect, tiene un código, que está predeterminado en 302. Tiene un constructor para ofrecer un código diferente, pero este constructor no parece ser utilizado en el marco de referencia. – Codemwnci