Personalización Rest G3W2

Hola, estamos necesitando una personalización para poder ofrecer información a otros sistemas externos a Guarani. Tomé como ejemplo lo que está en la clase legacy pero no me termina de convencer la manera que tengo para capturar los parámetros (si usamos GET).

En recurso_legacy.php tengo definida este método

function get_list__xxxxxx() {

    $datos = catalogo::consultar("rest_legacy", "xxxxxx", array('carrera' => $_GET['carrera'], 'legajo' => $_GET['legajo']));

    rest::response()->get_list($datos);

}

Luego, en rest_legacy.php tengo definido el método becas_info_academica que efectúa la consulta a la base y en _info_catalogo.php declaré esta funcion con los parámetros carrera y legajo.

Tuve éxito, me devuelve la información que requerimos, pero me parece un poco cruda la forma. Es decir, tengo dudas de que esté haciendo las cosas bien. Me podrían guiar un poco al respecto? La autenticación la solicita y anda bien.

Saludos!

Juan

Hola Juan,

Te recomendaríamos que no lo hagas dentro de src/siu/rest/legacy/recurso_legacy.php, ya que cuando actualices de versión vas a perder dichos cambios. Lo ideal es que lo hagas dentro de la carpeta src/pers, todo código que agregues va ahí dentro, nunca en la carpeta del SIU src/siu.

Otra cosa, no hace falta que lo metas en recurso_legacy.php, podes crear tu propio recurso ej: alumnos, inscripciones, actividades, etc. No se si tenes bien en claro la filosofía REST, podes leer un poco de que se trata aquí.

Supongamos que tu recurso se llama docentes, podes crear el archivo src/pers/unrn/rest/docentes/recurso_docentes.php, y dentro del mismo todos tus servicios relacionados al docente, para personalizar los servicios REST fíjate esta sección de la documentación.

saludos.

Agrego mas información,

si no te convence usar el $_GET podes usar la clase kernel::request(), la misma usa métodos de ZEND, para acceder a los datos del $_GET podes hacer kernel::request()->get($nombre_param).

Por otra parte, para generar el archivo _info_catalogo.php no tenes que hacerlo a mano, tenes el comando bin/guarani generar_catalogo dentro 3W que te lo genera de forma automática.

saludos.

Hola Leonardo,

Gracias por la respuesta. Si, pense en seguir el mismo esquema de las personalizaciones de G3W2 pero cuando me empecé a topar con algunos problemas solo a efectos de prueba fui a “la facil” y desarrollé todo ahí siempre con la idea de volcar todo como corresponde una vez que estuviera seguro de que funcionara bien.

Respecto de REST, no estoy familiarizado ya que trabajé mucho tiempo con SOAP. Lo poco que hice con REST lo hice usando Guzzle (muy básico) y no logro matchear lo poquito que aprendí de REST con lo que tengo que hacer aquí, seguramente producto de mi poca experiencia en este tema así que me va a venir bien ese link que me enviaste. La filosofía general, creo que la entiendo, de ahí a bajarla a tierra es otro cantar.

Respecto de generar_catalogo, me decis que no lo haga a mano, la pregunta que hago es de donde toma la información para generar _info_catalogo.php? recorre el directorio rest y arma el recurso?

Bueno, seguramente alguna otra pregunta te haré.

Saludos!

Juan

Hola Juan,

Parado en el directorio raíz del 3W podes correr el comando bin/guarani generar_catalogo <ACC_ID>, el mismo lee de las clases que están dentro de src/siu/modelo/datos/db y genera el archivo src/siu/modelo/datos/_info_catalogo.php. Lo arma a partir de la definición de las funciones y las annotations:


       /**
	 * parametros: email, nombre
	 * param_null: email
	 * cache: memoria
	 * filas: n
	 */
  function actualizar_configuracion($parametros)
  .....

NOTA: dentro de tu personalización debe existir la carpeta modelo/datos/db sino dicho comando va a dar error, ej: src/pers/unrn/modelo/datos/db.

cualquier cosa no dudes en consultar.

saludos.