Considere que la interfaz hace una llamada API a un servicio de backend.
client.get('/users');y la respuesta que esperamos es de la forma:
{ data: [ { id: 1, name: 'John' }, ..., { id: 10, name: 'Mary' }, ] }si tuviera que usar Typescript, haría algo como:
type User = { id: number; name: string; } type UsersResp = { data: User[] } const users = (await client.get<UsersResp>('/users')).data;Ahora, supongamos que el backend hace un cambio y en lugar de devolver la respuesta antes mencionada, simplemente envía:
[ { id: 1, name: 'John' }, ..., { id: 10, name: 'Mary' }, ] Ahora la interfaz se aplastará ya que no hay propiedad .data .
Mi pregunta es si tiene algún sentido validar la respuesta del servidor para tomar alguna acción en caso de que falle la validación, p. mostrar un bonito mensaje al usuario de que algo ha ido terriblemente mal.
¿Tiene algún sentido hacer eso o es solo un código repetitivo que no logra nada?
La necesidad de validación depende de la situación. No hay una respuesta simple de sí/no y depende de si es probable o no un cambio radical. En caso de duda, siempre implementaría mecanismos de validación porque sin el manejo de errores podría haber un comportamiento inesperado.
Para responder a su pregunta específica:
supongamos que el backend hace un cambio y en lugar de devolver la respuesta antes mencionada
Desde mi comprensión de su problema, no puede descartar por completo una respuesta incorrecta. Por lo tanto, la validación no es un código repetitivo innecesario . Sin una validación, su cliente podría ejecutarse en un estado indefinido, lo que provocaría que la interfaz de usuario no funcionara como se esperaba y que la experiencia del usuario fuera mala.
Una forma de validar la forma de la respuesta sería mediante el uso de protecciones de tipo definidas por el usuario .