Api Rest

Asked by Leonardo Lopez on 2015-02-17

Baje Europio Engine en su version 4.0 beta para utilizarlo y probarlo por que le perdí la pista desde que se
integraron los plugins para generar formularios.

Seguí la guía rápida de la wiki y primeros pasos.

Cuando llegue a la parte de crear un servidor de API REST

http://wiki.europio.org/virtualbooks/bookpage/ver/7

en el apartado 2.2 Modificar un recurso existente se dice que debes poner lo siguiente en tu recurso:

        $this->apidata = $list;
        # SI ESTÁ SIENDO SOLICITADO POR LA API, FINALIZA EL SCRIPT
        if($this->api) exit();
        # SINO, CONTINÚA SU EJECUCIÓN NORMALMENTE
        $this->view->listar($list);

Pero al poner esto en el recurso, simplemente no muestra nada.

Para lograr ver el resultado (json) tuve que poner lo siguiente

if($this->api)
            $this->apidata = $list;
        else
            $this->view->listar($list);

Justo como en las versiones anteriores.

El asunto con el exit() es que provoca un comportamiento no esperado en
private static function call() del front controller

Ya que primero se instancia el controlador y se ejecuta el recurso y después de esto se
valida si la API esta habilita para procesar los objetos y encodearlos en JSON.
 PERO DEBIDO AL EXIT DEL RECURSO EL SCRIPT SE DETIENE ANTES DE QUE SE PROCESEN DICHOS OBJETOS

# Llama al controlador solicitado por el usuario
    private static function call() {
        self::$pass = True;
        $controller = new self::$controller(self::$recurso, self::$arg,
            self::$api);

        # AQUI YA HUBO UN EXIT EN EL RECURSO DEL CONTROLADOR Y DETIENE LA EJECUCIÓN
        #POR LO TANTO NO MUESTRA EL RESULTADO EN JSON

        if(self::$api) ApiRESTFul::return_data($controller->apidata);
    }

ESPERO HABER SIDO CLARO.

SALUDOS!! @archzzio

Question information

Language:
Spanish Edit question
Status:
Solved
For:
Europio Engine Edit question
Assignee:
No assignee Edit question
Solved by:
Eugenia Bahit
Solved:
2015-02-17
Last query:
2015-02-17
Last reply:
2015-02-17
Best Eugenia Bahit (eugeniabahit) said : #1

Sí, Leonardo. Tu solución es correcta.
Estaba mal el ejemplo de la Wiki y ya lo he modificado. Gracias por avisar.

Leonardo Lopez (leonard-156) said : #2

:D por nada. Me gusta el proyecto.

SALUDOS!!

Leonardo Lopez (leonard-156) said : #3

Thanks Eugenia Bahit, that solved my question.