Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

227
Vistas
json-server devuelve HTTP 200 en lugar de 404 para la solicitud GET filtrada por parámetro de consulta, ¿cuál es la mejor práctica aquí y cómo se puede devolver 404?

Contexto

Intentar realizar una solicitud HTTP GET para publicaciones filtradas por el parámetro de consulta authorId=x donde x puede ser un número que puede no corresponder con el authorId de ninguna publicación.

Problema

json-server devuelve inesperadamente HTTP 200 en lugar de la respuesta HTTP 404 cuando no hay publicaciones con un authorId coincidente (es decir, se devuelve una matriz vacía), ¿cómo se puede cambiar esto para devolver 404 ? Del mismo modo, ¿cuál sería la mejor práctica de API aquí? ¿Sería devolver una matriz vacía con HTTP 400 como ya lo hace json-server o sería más claro para los usuarios devolver la matriz vacía con HTTP 404 ?

Miré jsonServer.rewriter & express middleware (por ejemplo, la documentación json-server muestra que se puede configurar con middleware como server.use(middlewares) ) pero quería preguntar cuál sería el mejor enfoque aquí (recursos/enlaces útiles sería apreciado aquí), por ejemplo, con middleware, una opción es enviar 404 para una matriz vacía, pero ¿ json-server tiene formas integradas de manejar esto o hay un mejor enfoque?

Todos los comentarios constructivos son bienvenidos, gracias.

Código

db.json :

 { "posts": [ { "authorId": 0, "content": "Foo bar" }, ], }

Caparazón:

 json-server --watch db.json

DESCANSAR:

 // Response status is expected HTTP 200. GET http://localhost:5000/posts?authorId=0

Esto devuelve al usuario con HTTP 200 como se esperaba:

 [ { "authorId": 0, "content": "Foo bar", } ]
 // Response status is unexpected HTTP 200 but 404 was expected since response body contains an empty array. This is the problem. GET http://localhost:5000/posts?authorId=does_not_exist

Esto devuelve una matriz vacía con HTTP 200 , lo que posiblemente sea inesperado (no se sabe cuál es la mejor práctica con respecto a las colecciones filtradas donde no hay coincidencia, pero cuál sería la mejor práctica aquí y cómo se puede cambiar el estado a HTTP 400 :

 []
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Como señaló @kindall, probablemente no sea aconsejable devolver 404, pero tal vez este sea el comportamiento existente de la API de la que se está burlando. Puede devolver una salida personalizada, desde documentos: https://github.com/typicode/json-server#custom-output-example

 // In this example we simulate a server side error response router.render = (req, res) => { res.status(500).jsonp({ error: "error message here" }) }

Para su ejemplo, probablemente sería algo así como (pseudocódigo no probado):

 // In this example we return 404 for no content router.render = (req, res) => { if (res.locals.data.posts.length < 1) { res.status(404).jsonp({ error: "no posts" }); } else { res.jsonp(res.locals.data); } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda