2012-09-29 21 views
10

Estoy haciendo una llamada AJAX para establecer el nombre de usuario. Si el nombre de usuario ya está tomado, ¿qué código HTTP debo devolver?¿Qué código de error HTTP devolver para el nombre ya tomado?

+0

Posible duplicado de [¿Qué código de respuesta HTTP para "Este correo electrónico ya está registrado"?] (Http://stackoverflow.com/questions/9269040/which-http-response-code-for-this-email-is- ya registrado) –

Respuesta

-2

No hay un código HTTP para el nombre ya tomado. Por favor, consulte List of HTTP Status Codes.

Si está utilizando llamadas AJAX para establecer el nombre de usuario, ¿por qué no simplemente muestra el error en HTML? Esto es más fácil de usar ya que los visitantes sabrán lo que significa el error real, en lugar de ver un código 4XX.

+1

Iba a capturar el código 4xx con jquery y mostrar un mensaje de error fácil de usar. – Ryan

+0

no está limitado a detectar cosas con códigos de estado http. puede ver los mensajes de error en su lugar. Compruebe la [jQuery API en $ .ajax] (http://api.jquery.com/jQuery.ajax/). El controlador de "éxito" debería ayudarlo, solo verifique los ejemplos en la API. – rationalboss

+0

Como comenté a continuación, 200 es para tener éxito. Los errores al completar las solicitudes garantizan un código de estado de error. Espero que Ryan no haya salido de su camino para regresar a los 200 cuando la solicitud ha fallado; esa es una mala idea. –

7

Elegiría 422 Entidad no procesable. Los desarrolladores de Lot's of Rails lo utilizan para todos los errores de validación.

Y sí, es totalmente apropiado evaluar el estado del error y representar el mensaje de error con javascript. Esto es especialmente útil si usa las mismas acciones para una API. Luego, sus solicitudes de ajax acceden a la misma API que expondría a otros desarrolladores.

16

puede usar 409 Conflict.otherwise 200 con mensaje de error.

1

No hay regla aquí, depende de usted. Sin embargo, como dijo @rationalboss, tiene sentido devolver 200 con un mensaje ya que la solicitud HTTP ha tenido éxito, el error no está relacionado con la solicitud.

400 errores significan que la solicitud en sí misma no era correcta de alguna manera, como verbo incorrecto o parámetros faltantes.

La pregunta aquí es acerca de la interpretación, tanto de los clientes de software como de los humanos, y sería mejor evitar los códigos de error cuando no hay un error de HTTP.

+1

No estoy de acuerdo, pero como dijo, es una cuestión de opinión. Para mí, un error al completar la solicitud garantiza un código de error. No quiero que un cliente revise los detalles en la respuesta para saber que algo estuvo mal. Si regreso bien, significa que ha tenido éxito. Cualquier error que complete la solicitud debe estar dentro de la categoría 400, a menos que sea una excepción de servidor real, caso en que vaya al 500, pero nunca a 200. –

Cuestiones relacionadas