Filosóficamente hablando, las páginas no "existen". Cuando pones libros o papeles en tu estante, permanecen allí. Ellos tienen una existencia separada en ese estante. Sin embargo, una página existe solo mientras esté alojada en alguna computadora que esté encendida y pueda proporcionarla bajo demanda. La página puede, por supuesto, generarse siempre sobre la marcha, por lo que no necesita tener una existencia especial antes de su solicitud.
Ahora piense en ello desde el punto de vista del servidor. Supongamos que es, por ejemplo, Apache configurado correctamente --- no es un servidor de una línea de python simplemente asignando todas las solicitudes al sistema de archivos. Entonces la ruta particular especificada en la URL puede no tener nada que ver con la ubicación de un archivo en particular en el sistema de archivos. Entonces, una vez más, una página no "existe" en ningún sentido claro. Tal vez solicite http://some.url/products/intel.html
, y obtiene una página; luego solicita http://some.url/products/bigmac.html
, y no ve nada. No significa que hay un archivo, pero no el otro. Es posible que no tenga permisos para acceder al otro archivo, por lo que el servidor devuelve 404, o tal vez bigmac.html
iba a ser servido desde un servidor Mc'Donalds remoto, que está temporalmente inactivo.
Lo que trato de explicar es decir, 404
es sólo un número. No tiene nada de especial: podría haber sido 40404
o -2349.23847
, acabamos de aceptar usar 404
. Significa que el servidor está allí, se comunica con usted, probablemente entendió lo que quería y no tiene nada que devolverle. Si cree que es apropiado devolver 404
para http://some.url/products/bigmac.html
cuando el servidor decida no entregar el archivo por algún motivo, entonces también puede aceptar devolver 404
para http://some.url/products?id=bigmac
.
Ahora, si quiere ser útil para usuarios con un navegador que intentan editar manualmente la URL, puede redirigirlos a una página con la lista de todos los productos y algunas capacidades de búsqueda en lugar de solo darles un 404
--- o puede dar un 404
como un código y un enlace a todos los productos. Pero luego, puede hacer lo mismo con http://some.url/products/bigmac.html
: redirigir automáticamente a una página con todos los productos.
Gracias por todas las respuestas populares. Ahora ha admitido que la opción uno es mejor que la opción 2 con algo más de lectura/investigación. – pythonandchips
Tenga en cuenta que los recursos en REST deben ser sustantivos y no verbos. "Buscar por código de producto" es por lo tanto inapropiado en primer lugar. – fletom