responses para pagina example codigos http http-status-codes

para - http status responses



Redirigiendo con un 201 creado. (4)

Creo que estás confundiendo dos respuestas semánticas diferentes: una le dice al cliente que creaste un recurso con éxito y dónde está. Si el cliente va a buscarlo o no, es una historia diferente.

La segunda es decirle al cliente que ha enviado la URI de ubicación incorrecta para un recurso que está solicitando, y que debería intentarlo de nuevo, pero con una URI diferente.

Un 303 es apropiado en este caso; de hecho, se recomienda explícitamente para esto:

(de rfc )

Se utiliza principalmente para permitir que la salida de una acción POST redirija el agente de usuario a un recurso seleccionado, ya que al hacerlo proporciona la información correspondiente a la respuesta POST en una forma que se puede identificar, marcar y guardar en caché por separado, independientemente de la solicitud original.

¿Hay una manera de redirigir a través de una respuesta 201?

El RFC especifica que el recurso recién creado debe especificarse en el encabezado de la Location , y yo sí lo especifico. Asumí que el navegador redirigiría pero no lo hace, incluso si la página no tiene contenido.

Quiero que el usuario, después de la acción POST, sea redirigido al nuevo recurso. Por lo tanto, me siento tentado a usar 303 See Other pero un 201 parece más apropiado.

Entonces, ¿hay alguna forma de redirigir automáticamente los navegadores populares sin la intervención del usuario y sin depender de Javascript?


El navegador ejecutará una acción de redireccionamiento a través de uno de los códigos de estado 3xx, la especificación no define que un agente de usuario debe redirigir con un 201. Puede intentar enviar un encabezado de actualización para ver si obliga a un redireccionamiento al encabezado de Location , Pero no contaría con ello. ¿Por qué no seguir con una respuesta 3xx?


Estoy lidiando con esto por primera vez, y esto es lo que he decidido hacer:

  • GET /user/new -> 200 Ok con formulario de registro de usuario.
  • POST /user -> 201 Created un nuevo usuario, responda con el mismo contenido que la ruta GET /user .
  • GET /user -> 200 Ok con la página de perfil de usuario para el usuario autenticado o, para visitantes anónimos, 307 Temporary Redirect a /login , que enlaza con /user/new .

actualizar

Descubrí que esta es una mala idea, porque si el usuario actualiza la página que se procesó como respuesta para POST /user , reenviará los datos de la publicación. Dejaré la respuesta aquí en caso de que alguien más tenga la misma idea brillante.


Usted podría enviar un encabezado de Refresh .