Autor Tema: (Solucionado) Error Servicio Rest migración proyecto 2.7 a 3.3  (Leído 126 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Romina Mansilla

  • Newbie
  • *
  • Mensajes: 14
    • Ver Perfil
  • Institución: UNLa
  • Nombre y apellido: Romina Mansilla
  • Sistema: SIU-Guarani, SIU-Tehuelche, SIU-Kolla
Buenas!

Estamos trabajando en migrar tres proyectos propios desarrollados con toba. Pasamos de la versión 2.7 a la 3.3 y pudimos migrar toda la información correctamente. Pero al probar la funcionalidad del sistema, notamos que los Servicios Rest que se ofrecen no devuelven nada. Es decir, si desde el Proyecto A consumimos un servicio esto funciona, pero si queremos consultar un servicio del Proyecto A la respuesta es nula.

Ingresando al Swagger del proyecto devuelve el siguiente mensaje:

Unable to render this definition
The provided definition does not specify a valid version field.

Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0).

Pero no encontré donde debo indicar la "versión" y no se si esto será un tema de la visualización únicamente o si será todo lo mismo.

Los logs de Toba no devuelven ningún error.

Alguna sugerencia?
« Última Modificación: Mayo 23, 2023, 03:18:44 pm por Romina Mansilla »

richard

  • Moderador Global
  • *****
  • Mensajes: 3047
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Error Servicio Rest migración proyecto 2.7 a 3.3
« Respuesta #1 on: Mayo 05, 2023, 03:53:04 pm »
Hola Romina,

Cita
notamos que los Servicios Rest que se ofrecen no devuelven nada. Es decir, si desde el Proyecto A consumimos un servicio esto funciona, pero si queremos consultar un servicio del Proyecto A la respuesta es nula.

Como es que estan intentando acceder al servicio?.. via curl o Swagger? y porque decis que la respuesta es nula?

Cita
Ingresando al Swagger del proyecto devuelve el siguiente mensaje:
Unable to render this definition
.
.

Normalmente, eso significa que el json que se arma con la definicion esta roto, puede ser algo tan simple como un notice que esta saliendo en el medio del mismo.
Para chequearlo (y ver que se rompe) podes hacer lo siguiente via linea de comandos:

Código: [Seleccionar]
bin/toba servicios_web serv_generar_doc -r 1 --tipo_ws rest --nombre-archivo [path_archivo_exportacion]

Luego te va a pedir el proyecto en cuestion y con eso se genera la misma definicion que veria Swagger, al menos podes ver si es un problema con la documentacion de los metodos de los WS... o alguna otra cuestion.

Cita
Los logs de Toba no devuelven ningún error

Revisaron los logs de Apache?... si es un fatal quizas no alcance a grabarse en el log de Toba.

Otro lugar para mirar (si aun no lo chusmearon) seria en instalacion/i__[blahblah]/p__[tutu]/logs/web_services.log en el proyecto que sirve la API.

Una cuestion extra, la version de Swagger que estan utilizando es la que viaja contenida en el framework?

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Romina Mansilla

  • Newbie
  • *
  • Mensajes: 14
    • Ver Perfil
  • Institución: UNLa
  • Nombre y apellido: Romina Mansilla
  • Sistema: SIU-Guarani, SIU-Tehuelche, SIU-Kolla
Re:Error Servicio Rest migración proyecto 2.7 a 3.3
« Respuesta #2 on: Mayo 08, 2023, 05:20:44 pm »
Hola,

Cita
Como es que estan intentando acceder al servicio?.. via curl o Swagger? y porque decis que la respuesta es nula?

Dentro del sistema me conecto a través de CURL, aparentemente la conexión se establece correctamente y se ejecuta el servicio pero la respuesta llega sin datos, a eso me refería con nula. La conexión con la BDD esta OK en otras funciones del sistema, y las consultas del recurso REST las verifique (aunque no hayan sufrido modificaciones) y ahí si tengo info. Desde Swagger cuando quiero acceder es que tira el otro error de "unable to render this definition".

Cita
Normalmente, eso significa que el json que se arma con la definicion esta roto, puede ser algo tan simple como un notice que esta saliendo en el medio del mismo.
Para chequearlo (y ver que se rompe) podes hacer lo siguiente via linea de comandos:

Código: [Seleccionar]
bin/toba servicios_web serv_generar_doc -r 1 --tipo_ws rest --nombre-archivo [path_archivo_exportacion]

Luego te va a pedir el proyecto en cuestion y con eso se genera la misma definicion que veria Swagger, al menos podes ver si es un problema con la documentacion de los metodos de los WS... o alguna otra cuestion.

Al ejecutar el comando que me pasaste efectivamente habia algunos warning de PHP que corregí. Pero incluso cuando la respuesta del comando esta OK, sigo teniendo el mismo problema (tanto en el swagger como en el curl dentro del sistema)


Cita
Revisaron los logs de Apache?... si es un fatal quizas no alcance a grabarse en el log de Toba.

Si, pero no lanza ningún error.


Cita
Otro lugar para mirar (si aun no lo chusmearon) seria en instalacion/i__[blahblah]/p__[tutu]/logs/web_services.log en el proyecto que sirve la API.

No tengo este archivo que me indicas, se activa de alguna forma?

Cita
Una cuestion extra, la version de Swagger que estan utilizando es la que viaja contenida en el framework?

Si, no modificamos nada. Es la que se instala con el composer.

Saludos

richard

  • Moderador Global
  • *****
  • Mensajes: 3047
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Error Servicio Rest migración proyecto 2.7 a 3.3
« Respuesta #3 on: Mayo 12, 2023, 11:26:38 am »
Hola Romina,

Dentro del sistema me conecto a través de CURL, aparentemente la conexión se establece correctamente y se ejecuta el servicio pero la respuesta llega sin datos, a eso me refería con nula. La conexión con la BDD esta OK en otras funciones del sistema, y las consultas del recurso REST las verifique (aunque no hayan sufrido modificaciones) y ahí si tengo info. Desde Swagger cuando quiero acceder es que tira el otro error de "unable to render this definition".

Una cuestion a revisar seria si estan usando el "hidratador" en el armado de la respuesta del servicio, quizas no se este reconociendo el modelo y por ello la respuesta sea nula, podrian chequear tirando un var_dump() de los datos que deberian devolverse previo a eso?... como para ver si el problema radica alli.

Cita
Al ejecutar el comando que me pasaste efectivamente habia algunos warning de PHP que corregí. Pero incluso cuando la respuesta del comando esta OK, sigo teniendo el mismo problema (tanto en el swagger como en el curl dentro del sistema)

Pero en Swagger podes ver la definicion al menos?

Cita
Si, pero no lanza ningún error.
Ok, entonces no seria un fatal en ppio.

Cita
No tengo este archivo que me indicas, se activa de alguna forma?

En gral se utiliza la misma definicion de error del proyecto, con lo cual si el mismo no loguea a archivos... la parte REST tampoco lo hara, sino puede ser simplemente una cuestion de seleccionar un nivel mas alto de forma que aparezcan los mensajes de DEBUG.

Cita
Si, no modificamos nada. Es la que se instala con el composer.
Genial, Swagger deberia parsear correctamente el json entonces

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Romina Mansilla

  • Newbie
  • *
  • Mensajes: 14
    • Ver Perfil
  • Institución: UNLa
  • Nombre y apellido: Romina Mansilla
  • Sistema: SIU-Guarani, SIU-Tehuelche, SIU-Kolla
Re:Error Servicio Rest migración proyecto 2.7 a 3.3
« Respuesta #4 on: Mayo 16, 2023, 11:51:58 am »
Cita
Una cuestion a revisar seria si estan usando el "hidratador" en el armado de la respuesta del servicio, quizas no se este reconociendo el modelo y por ello la respuesta sea nula, podrian chequear tirando un var_dump() de los datos que deberian devolverse previo a eso?... como para ver si el problema radica alli.

Lo revisé y si, con el var_dump() veo los datos correctamente.

Cita
Pero en Swagger podes ver la definicion al menos?

No, en el swagger no puedo ver la definición incluso tras corregir los warnings que mencionaba.

Cuando llamo al Rest desde la aplicación el log de toba no devuelve nada extraño, pero al intentar entrar a la definicion del swagger del proyecto noté que el log de toba si devolvia un error. Al rastrearlo por el código vi que el toba error se lanza en /framework/php/nucreo/lib/toba_rest.php

Código: [Seleccionar]
if (isset($datos_ini_proyecto['proyecto']['api_major']) && isset($datos_ini_proyecto['proyecto']['api_minor'])) {
$settings['api_version'] = "v{$datos_ini_proyecto['proyecto']['api_major']}.{$datos_ini_proyecto['proyecto']['api_minor']}";
$settings['api_major'] = $datos_ini_proyecto['proyecto']['api_major'];
$settings['api_minor'] = $datos_ini_proyecto['proyecto']['api_minor'];
} else {
throw new toba_error('No esta especificada la version de la API (major:minor)');
}

Donde defino esas variables?

En el mismo archivo agregue:

Código: [Seleccionar]
toba::logger()->info($datos_ini_proyecto);
Y no, no estan.

richard

  • Moderador Global
  • *****
  • Mensajes: 3047
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Error Servicio Rest migración proyecto 2.7 a 3.3
« Respuesta #5 on: Mayo 22, 2023, 10:57:52 am »
Hola Romina,

Cuando llamo al Rest desde la aplicación el log de toba no devuelve nada extraño, pero al intentar entrar a la definicion del swagger del proyecto noté que el log de toba si devolvia un error. Al rastrearlo por el código vi que el toba error se lanza en /framework/php/nucreo/lib/toba_rest.php

Código: [Seleccionar]
if (isset($datos_ini_proyecto['proyecto']['api_major']) && isset($datos_ini_proyecto['proyecto']['api_minor'])) {
$settings['api_version'] = "v{$datos_ini_proyecto['proyecto']['api_major']}.{$datos_ini_proyecto['proyecto']['api_minor']}";
$settings['api_major'] = $datos_ini_proyecto['proyecto']['api_major'];
$settings['api_minor'] = $datos_ini_proyecto['proyecto']['api_minor'];
} else {
throw new toba_error('No esta especificada la version de la API (major:minor)');
}

Donde defino esas variables?

Dichas entradas las definis en el archivo proyecto.ini dentro de la seccion perteneciente al proyecto deberia quedarte algo asi por ejemplo:

Código: [Seleccionar]
;Version del proyecto, debe ser formato x.y.z
version = 3.3.25
api_major = 1
api_minor = 0

No enganche por este lado ya que la invocacion por curl te devolvia algo vacio en lugar de un msg de error, mala mia podriamos haber ahorrado tiempo.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Romina Mansilla

  • Newbie
  • *
  • Mensajes: 14
    • Ver Perfil
  • Institución: UNLa
  • Nombre y apellido: Romina Mansilla
  • Sistema: SIU-Guarani, SIU-Tehuelche, SIU-Kolla
Re:Error Servicio Rest migración proyecto 2.7 a 3.3
« Respuesta #6 on: Mayo 23, 2023, 03:18:26 pm »
Muchas Gracias! era ese detalle... Ya puedo entrar al Swagger y me trae datos consultando desde el Curl.

Saludos!