Feda /dev/ - No Javascript allowed

Normas
spoiler
Personas non gratas
Memes feda dev




wdaoajw

#54000 pero como que bromas aparte, not found es un 404 de toda la vida.

4xx - client error
5xx - server error

Si algo te devuelve un 404 es que TU estás haciendo algo mal, no el servidor

1 1 respuesta
LLoid

Si buscas recursos aplicando filtros y demás en la request, 200 con array vacío a mi me parece bien

Si quieres recibir un recurso único por id por ejemplo y no existe 404

4 1 respuesta
Fyn4r

#54000 Lo que yo hago es devolver 404 si estás intentando acceder a un recurso que no existe o un 200 y lista vacía si lo que haces es una búsqueda sobre una colección

#54002 si te leo antes no lo escribo xd

3
Kaledros
#54001wdaoajw:

Si algo te devuelve un 404 es que TU estás haciendo algo mal

Si algo te devuelve un 404 es que has ido a buscar algo que no existe. Eso no es un error igual que no es un error abrir la nevera buscando leche y que no haya, el error sería no poder abrir la nevera o que la nevera no existiera. Abrirla y no encontrar leche es un proceso que se ha llevado a cabo correctamente pero que no ha devuelto nada.

Y eso no es un error.

2 respuestas
B

#54000 Lógica de negocio lo llaman. El 200 te dice que no hubo ningún error en la aplicación y el valor de un array vacio es una respuesta "resiliente"... no tienes que andar checkeando nada... si tienes datos te va un array con datos, si no tiene datos te va un array vacio... si peta te da un 5XX, si tratas de pedir algo en un lugar incorrecto un 4XX, etc.. etc..

B

#54004 El propio estándar llama a todos los 4xx como error

https://www.rfc-editor.org/rfc/rfc9110.html#name-client-error-4xx

Semánticamente se considera error 4xx cuando el propio acto de buscar algo que no existe está mal de por sí. Un ejemplo más acertado en mi opinión sería buscar calcetines en la nevera. Es un "client error" en el sentido de "qué coño haces buscando calcetines en la nevera?".

Tu ejemplo de la leche para mí sería un 2xx con un array vacío.

1 respuesta
wdaoajw

#54004 estás confundiendo términos. En tu ejemplo:

  • intentar abrir la nevera para coger algo y que no exista ese algo - 200 con array vacío

  • intentar abrir la nevera y que la nevera no exista -> 404

4 1 respuesta
jiGGSaW

1
pineda

si queda poca leche es un status 206

Lifecasi0

#53993 Yo tampoco lo veo claro, pero ya sabes que con TDD no habría pasado.

Kaledros

#54006 #54007 Para devolver un 200 con payload vacío devolved un 204 no content: https://www.rfc-editor.org/rfc/rfc7231#section-6.3.5

1 respuesta
Lifecasi0

#54011 No estoy de acuerdo, el 204 lo devolverías si la respuesta no tuviera contenido pero todo ha ido ok. Con el 200 y un array vacío, dejas claro que hubo respuesta pero que no tiene datos.

1 1 respuesta
Kaledros

#54012 Si esa falta de datos supone un problema no deberías devolver un 200.

2 respuestas
Lifecasi0

#54013 es que el que suponga un problema o no es lógica de negocio... si tú haces una llamada, la llamada se recibe correctamente, y se devuelven los datos de esa llamada (que están vacíos), no veo porqué vas a devolver otra cosa que no sea un 2xx.

Otro tema es que los datos estén vacíos porque algo pete.

1 respuesta
Fyn4r

#54013 A ver un 204 es para una operación que no va a devolver datos nunca, no una búsqueda con unos parámetros que encuentren más o menos. Puedes incluso tener el API paginada y aunque la búsqueda sea vacía devolver metadatos igual

Dr_Manhattan

hola, es un 200, no hay más vueltas

un saludo

Kaledros

#54014 Es que no te puedes abstraer a la lógica de negocio.

Si yo voy a buscar una peli en Netflix y la peli no existe porque la han quitado el servicio le devolverá al cliente un 404 y el cliente me enseñará una página de "oops". Desde el punto de vista de negocio se ha producido un error, un usuario no ha recibido lo que buscaba. Sin embargo, desde el punto de vista del código, todo ha ido de puta madre, ningún componente o servicio ha fallado, ergo eso no es un error.

De hecho, se puede argumentar que si tú mismo has eliminado esa peli el no encontrarla no es un error, es simplemente el resultado correcto, el comportamiento esperado.

1 respuesta
Fyn4r

#54017

ningún componente o servicio ha fallado, ergo eso no es un error.

Es que eso sería un 5XX xd

2 1 respuesta
Wei-Yu

el ejemplo de wadjeoejjewwwwjejejeww es perfecto no sé por qué le dais vueltas si su ejemplo lo entiende mi PO

1 respuesta
Kaledros

#54018 O un 404 porque le has pasado un campo mal formado.

#54019 Devolver un 200 cuando no has encontrado algo que buscabas, muy correcto todo XD

1 respuesta
Lifecasi0

#54020 Si un campo está mal formado, sería un BAD_REQUEST, no un NOT_FOUND.

1 respuesta
Kaledros

#54021 Cierto, se me ha ido el dedo XD

Dr_Manhattan

es la primera vez que trabajas con una api?

Kaledros

Yo me dedico a tejer punto.

desu

Todos estais equivocados. TODOS.

Si quereis os doy una master class... parece que soy el unico que sabe de HTTP y API por este hilo... para variar.

1 respuesta
desu

La explicacion creo que ya la di en su dia, porque es un error comun, veo que todos lo cometeis, estais mezclando la capa de APPLICATION con la de NETWORKING.

Si te devuelve un 200 por HTTP, solo significa que hay bytes en el body, nada mas.

Desde el punto de vista de tu negocio, que puede estar "varias capas" por encima de ese GET HTTP, si esto esta bien o mal es otro tema. Podeis tener un mobil haciendo una peticion a una CDN, que falla y va a un balanceador que luego redirecciona a un servidor web, que este a su vez hace varias queries a distintas db (que pueden estar de nuevo cacheado y tener mi historias) y todo al final, te devuelve un status. Toda esta pipeline que devuelva un 200 se basa en que NETWORK funcione, el tcp, y que el contenido sea correcto APPLICATION.

Mi recomendacion simplemente es tener esto SIEMPRE presente y no mezclar applicacion con network nunca, desde el punto de vista de una cache, si recibe datos de la db y te lo devuelve eso es un 200 no? eres tu como programador quien construye encima.

En su dia me lei varias veces todo el protocolo http y status code y vereis que son muy especificos con esto de "transmision" y "network".

1 respuesta
Wei-Yu

#54025 Encuentra un solo post donde haya dicho lo que acabas de citar.

Eres un MENTIROSO.
A partir de hoy a parte del devops tontito eres el MENTIROSO oficial de hilo.
Cuando pierde una discusion MIENTES.

HAHAHAHAAHAHAHAH

Eres como un niño pequeño, como no tienes razon te inventas lo que los demas dicen para tenerla?

Eres un MENTIROSOOOOOOOOOOOOOOOOOOOOOOOOOOOoooOOOOOOOOOOOOOOOO

Te va a crecer la nariiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiz HAHAHAHAHAH

hda

Hey chavales, ¿conocéis algún modelo ligerito comparador de textos para plagios?

1 respuesta
Dr_Manhattan

#54028 no sé si te servirá este, pero puede que haya más en hugging face https://huggingface.co/jpwahle/longformer-base-plagiarism-detection

1 respuesta
Kaledros

#54026 Yo me refería a lógica de negocio. Me parece bien que el protocolo meta un not found en el saco de errores, no me afecta. Lo que sí me jode es que después llegue un PO y diga "tenemos un 15% de errores en las llamadas al servicio" cuando en realidad son todo not founds que recibimos del servicio al que consultamos para buscar las cosas.

Que un tío entre a la app y no encuentre un item no tiene por qué ser un error, por eso he puesto el ejemplo de Netflix. Me la pela que mi servicio lo reciba y lo considere un error, yo no debo loggear un not found como error si en la lógica de negocio se contempla que el contenido sea perecedero y en algún momento dado se vaya a buscar y haya desaparecido.

1 respuesta