Está repitiendo un identificador en una solicitud de API y la respuesta se considera un olor de código

7

¿Es extraño tener un identificador como (_id) en una solicitud que envía a la API, que "enriquece" la solicitud y envía una respuesta con el mismo identificador (pero, obviamente, con datos más enriquecidos)?

Por ejemplo, envía una solicitud {_id: 1111} y obtiene una respuesta {_id: 1111, aparición: nueva, etc.}

La razón por la que siento que es un poco extraño es porque esencialmente estoy enviando y recibiendo el mismo campo, por lo que mi cerebro dice que es el olor a código, pero cuando lo miro lógicamente tiene sentido ya que estoy enviando algo que necesita para ser enriquecido (hacer ciertos cálculos basados en el identificador) y la razón por la que tengo un identificador en la respuesta es para que pueda igualar los resultados en la parte delantera.

Esperemos que esto tenga sentido y si ustedes necesitan más detalles, háganme saber y los agregaré.

¡Gracias a todos!

    
pregunta AvetisG 08.11.2016 - 17:16

2 respuestas

5

Esto está bien. Considere cuando está preguntando "dime todo sobre el registro X". Bueno, todo sobre el registro X, incluye su ID. Parecería un poco extraño preguntar por todo para un registro, y NO recuperar su ID. En general, prefiero recuperar estos datos a pesar de la ligera sobrecarga adicional.

En el caso en el que no necesita todo, y es solo un subconjunto o un cálculo basado en los datos, sigue siendo la práctica preferida de IMO. Tu respuesta es más completa. El id sirve como verificación y puede usarse para programar defensivamente.

Es como hacerle una pregunta a alguien. "¿Qué es 2 + 2". Cuando responden solo 4, ¿cómo sabes que están respondiendo tu pregunta o que están respondiendo la pregunta de otra persona a través de sus auriculares bluetooth? Si responden "2 + 2 = 4", entonces tiene una verificación integrada de la integridad de su respuesta.

La pregunta realmente es hasta qué punto desea que sus mensajes dependan de su contexto operacional. Si tienen una identificación, dependen menos de su contexto operacional. Esto significa que están menos acoplados, lo que generalmente es una buena práctica.

    
respondido por el Brad Thomas 08.11.2016 - 17:36
3

No es estrictamente necesario con una solicitud síncrona. Tiene un costo realmente bajo y puede ser útil para solucionar problemas. Puede ayudarlo a vincular transacciones entre sistemas. Si no se suministra uno, recomendaría generar uno (por ejemplo, un UUID) y devolverlo por los mismos motivos.

    
respondido por el JimmyJames 08.11.2016 - 17:25

Lea otras preguntas en las etiquetas