es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El método de HttpGet IActionResult que llama al microservicio devuelve todos los atributos como nulos.

Estoy siguiendo este tutorial y específicamente estoy utilizando el código de la sección Uso básico.

Cuando envío una solicitud GET desde Postman a http://localhost:9000/api/gateway, obtengo la cantidad correcta de objetos, tantos como hay en la base de datos, pero todos los atributos son nulos.

Intenté cambiar de ReadAsStreamAsync a ReadAsStringAsync, y en realidad obtuve una cadena grande, una matriz de todos los registros de la base de datos.

Los atributos no eran nulos allí, pero no sé cómo convertir una cadena en un IEnumerable de objetos, así que eso no me ayuda mucho.

¿Alguien tiene alguna idea de lo que podría estar faltando? Consulte el método del controlador a continuación.

Tenga en cuenta que el método envía solicitudes HTTP a localhost:5000, pero el método en sí recibe solicitudes entrantes en localhost:9000.

El objetivo es crear una Puerta de Enlace de API, que llame a otro microservicio y no tenga acceso directo a la base de datos del microservicio al que llama.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el código proporcionado, parece que el problema podría estar en la clase PatientDto. Asegúrese de que las propiedades en la clase PatientDto coincidan con los atributos devueltos por el microservicio al que se llama.

    Si las propiedades en la clase PatientDto y en el microservicio no coinciden, es posible que el método JsonSerializer.DeserializeAsync no pueda deserializar correctamente la respuesta JSON, lo que resultaría en valores nulos para todas las propiedades.

    Otra posibilidad es que la respuesta JSON del microservicio no esté en el formato o esquema esperado. Puede intentar validar la respuesta JSON utilizando un validador de JSON.

    Por último, también es posible que el problema esté en Postman. Intente usar otro cliente HTTP como curl o HttpClient en código C# para verificar que el problema no sea con Postman.

Comments are closed.