Diferencia entre revisiones de «SIU-Guarani/Version3.11.0/personalizaciones/rest»

De SIU
Saltar a: navegación, buscar
Línea 64: Línea 64:
 
class recurso_aulas_uni implements SIUToba\rest\lib\modelable{
 
class recurso_aulas_uni implements SIUToba\rest\lib\modelable{
 
      
 
      
      public static function _get_modelos(){
+
    public static function _get_modelos(){
  
 
         $edificio_uni = array(
 
         $edificio_uni = array(
Línea 101: Línea 101:
 
}
 
}
 
</source>
 
</source>
 +
# Finalmente a modo de ejemplo crearemos tres servicios, uno para la creación de un aula (POST /aulas-uni), otro para obtener un listado de aulas (GET /aulas-uni) y un tercero para obtener un aula en particular dado el ID de aulas (GET /aulas-uni/{id_aula}):

Revisión del 12:57 1 ago 2016

Personalizar servicios REST

Crear un nuevo servicio REST

Si lo que se desea es crear un nuevo servicio REST se debe hacer lo siguiente:

Supongamos que el nuevo servicio manipule aulas, por lo tanto nuestro nuevo recurso se pasara a llamar aulas, para crearlo seguiremos los siguientes pasos:

  1. Crear el archivo <path proyecto Guaraní>/personalizacion/php/rest/aulas_uni/recurso_aulas_uni.php, donde uni sera en nombre de la universidad en cuestión (esto evita futuras colisiones de nombre si el SIU decide mas adelante agregar el recurso aulas).
  2. Dentro de dicho archivo crear la clase recurso_aulas_uni la cual debe implementar la interface modelable:
    <?php

    //personalizacion/php/rest/aulas_uni/recurso_aulas_uni.php

    use SIUToba\rest\rest;
    use SIUToba\rest\lib\rest_validador;

    class recurso_aulas_uni implements SIUToba\rest\lib\modelable{
    ............
    }
  3. Luego procederemos a agregar la capa de datos que se encargara de las operaciones de tipo ABM/CRUD de los servicios en cuestión, en este caso agregaremos la clase rest_aulas_uni en <path proyecto Guaraní>/personalizacion/php/nucleo/aulas/rest_aulas_uni.php:
    <?php

    //personalizacion/php/nucleo/aulas/rest_aulas_uni.php

    class rest_aulas_uni{
    ............
    }
  4. Seguido vincularemos la clase rest_aulas_uni a nuestro nuevo recurso recurso_aulas_uni:
    <?php

    //personalizacion/php/rest/aulas_uni/recurso_aulas_uni.php

    use SIUToba\rest\rest;
    use SIUToba\rest\lib\rest_validador;

    class recurso_aulas_uni implements SIUToba\rest\lib\modelable{
       
        /**
         * @var rest_aulas_uni
         */

        protected $modelo;

        function __construct()
        {
            $this->modelo = guarani::rest('rest_aulas_uni');
        }
    }
  5. Luego a modo de ejemplo crearemos la estructura que tendrá nuestro recurso el cual llamaremos Aula_uni y tendrá los atributos nombre, fecha_creacion, estado y edificio (modelo Edificio_uni):
    <?php

    //personalizacion/php/rest/aulas_uni/recurso_aulas_uni.php

    use SIUToba\rest\rest;
    use SIUToba\rest\lib\rest_validador;

    class recurso_aulas_uni implements SIUToba\rest\lib\modelable{
       
        public static function _get_modelos(){

            $edificio_uni = array(

                'nombre' => array(
                    'type'          => 'string'
                )

            );

            $aula_uni = array(

                'nombre' => array(
                    'type'          => 'string'
                ),

                'fecha_creacion'     => array(
                    'type'          => 'date',
                    '_validar'      => array(rest_validador::TIPO_DATE)
                ),

                'estado'     => array(
                    'type'          => 'string',
                    'enum'          => array("A", "B"),
                    '_validar'      => array(rest_validador::TIPO_ENUM => array("A", "B"))
                ),

                'edificio'                  => array('$ref' => 'Edificio_uni')
            );

            return array(
                'Aula_uni' => $aula_uni,
                'Edificio_uni' => $edificio_uni
            );
        }
    }
  6. Finalmente a modo de ejemplo crearemos tres servicios, uno para la creación de un aula (POST /aulas-uni), otro para obtener un listado de aulas (GET /aulas-uni) y un tercero para obtener un aula en particular dado el ID de aulas (GET /aulas-uni/{id_aula}):