2011-04-09 9 views
38

Tengo curiosidad por saber cuál es el código de estado HTTP más apropiado para una página de "elemento no existe".Cuál es el código de estado HTTP más apropiado para una página de error "elemento no encontrado"

Si la página en sí no existe, obviamente usaré 404. Sin embargo, una de mis páginas tiene un argumento userid (es una página de "editar usuario") y en caso de que no exista ningún usuario con la ID de usuario dada Estoy mostrando una página de error, pero también me gustaría enviar un encabezado de estado 4xx (ya que "200 OK" no encaja).

Supongo que 404 estaría bien ya que "no se encuentra" y no "archivo no encontrado", pero me pregunto si hay un código mejor para este caso.

Respuesta

55

Hacer demasiada inteligencia con códigos de error HTTP oscuros es una mala idea. Los navegadores a veces reaccionan de manera inútil que ofusca la situación. Quédese con 404.

+2

Maldito por dar un buen consejo :(El TOC a 404 no todas las cosas es real. –

21

Un código de retorno 404 en realidad significa 'recurso no encontrado', y se aplica a cualquier entidad para la que se realizó una solicitud pero no se cumplió. Por lo tanto, funciona igualmente bien para las páginas, las subsecciones de las páginas y cualquier elemento que exista en la página que tenga una solicitud específica para ser presentada.

So 404 es el código correcto para usar en este escenario. Tenga en cuenta que no aplica al 'servidor no encontrado', que es una situación diferente en la que se emitió una solicitud pero no se contestó en absoluto, en oposición a la respuesta pero sin el recurso solicitado.

5

Eso depende de si userid es un identificador de recursos o un parámetro adicional. Si es así, está bien para volver 404 si no es posible volver otro código como

400 (bad request) ‐ indicates a bad request
o
412 (Precondition Failed) e.g. conflict by performing conditional update

Más información en libre InfoQ Explores: REST libro.

+1

Al decir "parámetro adicional" ¿quiere decir campo de encabezado de solicitud? De lo contrario, no recomendaría usar 412. "The 412 (Código de estado de precondición fallida) indica que una o más condiciones dadas en los campos de encabezado de solicitud se evaluaron como falsas cuando se probaron en el servidor. " – oferei

Cuestiones relacionadas