Yo diría que tampoco.
¿Por qué no 404 (no encontrado)?
El código de estado 404 debe reservarse para situaciones en las que no se encuentra un recurso. En este caso, su recurso es una colección de usuarios . Esta colección existe pero actualmente está vacía. Personalmente, estaría muy confundido como autor de un cliente para su aplicación si tuviera un 200
día y un404
al día siguiente solo porque alguien eliminó un par de usuarios. ¿Que se supone que haga? ¿Mi URL es incorrecta? ¿Alguien cambió la API y se olvidó de dejar una redirección?
¿Por qué no 204 (sin contenido)?
Aquí hay un extracto de la descripción del código de estado 204 por w3c
El servidor ha cumplido la solicitud, pero no necesita devolver un cuerpo de entidad y es posible que desee devolver metainformación actualizada.
Si bien esto puede parecer razonable en este caso, creo que también confundiría a los clientes. Se 204
supone que A indica que alguna operación se ejecutó correctamente y no es necesario devolver ningún dato. Esto es perfecto como respuesta a una DELETE
solicitud o tal vez para activar algún script que no necesita devolver datos. En el caso de api/users
, normalmente espera recibir una representación de su colección de usuarios. Enviar un cuerpo de respuesta una vez y no enviarlo la otra vez es inconsistente y potencialmente engañoso.
Por qué usaría un 200 (OK)
Por las razones mencionadas anteriormente (coherencia), devolvería una representación de una colección vacía. Supongamos que está utilizando XML. Un cuerpo de respuesta normal para una colección de usuarios no vacía podría verse así:
<users>
<user>
<id>1</id>
<name>Tom</name>
</user>
<user>
<id>2</id>
<name>IMB</name>
</user>
</users>
y si la lista está vacía, podría responder con algo como esto (mientras sigue usando a 200
):
<users/>
De cualquier manera, un cliente recibe un cuerpo de respuesta que sigue un formato determinado y conocido. No hay confusión innecesaria ni verificación de códigos de estado. Además, no se infringe ninguna definición de código de estado. Todo el mundo está feliz.
Puede hacer lo mismo con JSON o HTML o cualquier formato que esté usando.