2012-04-27 12 views
5

Estoy tratando de hacer que una API se base libremente en los resultados de API de StackExchange.¿Debería este resultado Json devolver un 404 o 200?

Así que aquí está mi salida json.

{ 
    "items" : [ ... objects in here .... ] 
    "page" : 
    "page_size" : 
    "total_pages" : 
    "total_items_count" : 
    "maximum_quota" : 
    "remaining_quota" : 
} 

pretty damn simple.

Ahora, no estoy seguro de qué hacer si la persona intenta solicitar un ... um .. producto o pregunta o lo que sea, y el elemento no existe.

por ejemplo ..

{ 
    "items": [] 
    ... snipped .... 
} 

Estaba pensando que volvería a 200 y JSON anteriormente, con la propiedad Items estar vacío.

La otra idea que tenía era que volver JSON con la propiedad artículos vacío pero estableciendo el estado de respuesta HTTP a 404.

Pensamientos/estándares?

Realmente quiero devolver el JSON pase lo que pase. ¿Por qué? la cuota. Incluso un resultado vacío sigue siendo un golpe legítimo para el servicio de API.

+2

En mi opinión, usaría un 404, porque ese es el código estándar no encontrado. – hawkfalcon

Respuesta

3

En mi opinión volvería un estado 400 & 204:.

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

400 Bad Request

La solicitud no puede ser satisfecha debido a la mala sintaxis [2]

Si pasa un argumento no válido, se devuelve un estado 400 indicando que la solicitud es incorrecta.

En este caso, no devolvería ningún mensaje JSON. No es válido, solucionalo. StatusMessage puede decir 'Invalid Argument', pero no contenido.


204 Sin contenido

El servidor ha procesado la solicitud, pero no muestra ningún contenido. [2]

Si pasa argumentos válidos, pero no se encontró el contenido, puede decir que no se encontró.

Es posible que * desee pasar algo de información adicional de nuevo, puede que no.

Para Twitter, supongamos que desea buscar el usuario '@JohnDoe' y no se encontró. Podría decir 204, con: "Lo siento, no pudimos encontrar a @JohnDoe, pero sí encontramos a estas 3 personas similares que pueden ser lo que usted quiere", en cuyo caso no presionaría sus detalles, solo los nombres de Twitter.

Sin embargo, si estaba buscando un tweet, y no fue encontrado, no hay razón para enviar información adicional al cliente. Solo di que no fue encontrado, final de la historia.

+0

¡Me encanta! Nunca pensé en 204 :) Y sí, los 400 que uso para los malos datos de solicitud pasados. –

Cuestiones relacionadas