Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Posted by YvesTan on 05/20/2010 12:40

Salut à tous,

Je développe une application basé sur RESful. Pour le GET, pas de souci. Par contre, pour PUT/POST/DELETE, je ne parviens pas a récupérer les valeurs envoyées.

J'utilise le même point d'entrée pour le html et pour le REST. Je change juste la réponse qui est en json pour mon contrôleur en REST.

J'ai essayé en créant un point d'entrée jsonrpc mais ça ne donne plus rien...

Comment faire un sorte que l'objet jRequest associé à un contrôleur classic utilise le jRequest JSON-rpc ?

Où est-ce qu'il faut bel et bien créer un autre point d'entrée jsonrpc ?

Merci ++

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Reply #1 Posted by laurentj on 05/23/2010 15:05

Salut,

utiliser json-rpc et du restfull, ce n'est pas possible, ce sont deux protocoles d'échanges differents. json+restfull, ok, mais pas json-rpc+restfull, ça n'a pas de sens.

Donc déjà, as tu suivi les instructions pour faire du restfull ? à priori, il n'y a pas besoin de point d'entrée spécifique.

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Reply #2 Posted by YvesTan on 05/26/2010 11:13

Salut,

Oui, j'ai suivi la procédure. Ceci étant, pour récupérer PUT, il faut passer par une lecture de php://input ?! Hors, jRequest sur le contrôleur classique ne récupère que $_GET ou $_POST via la méthode param()

J'ai donc ajouté une méthode :

// {{{ getRESTParams()

<code>
    /** récupère les valeurs envoyées
    *
    *
    */
    protected function getRESTParams() 
    {
        // valeurs
        if (isset($_REQUEST['data'])) {
            $params =  json_decode(stripslashes($_REQUEST['data']));
        } else {
            $raw  = '';
            $httpContent = fopen('php://input', 'r');
            while ($kb = fread($httpContent, 1024)) {
                $raw .= $kb;
            }
            $params = json_decode(stripslashes($raw));
            $params = $params->data;
        }

        return $params;

    }

    // }}}
</code>

Donc, la question serait plutôt : comment récupérer les valeurs PUT via la méthode param() du contrôleur classique ?

Merci

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Reply #3 Posted by laurentj on 05/31/2010 18:45

Tu n'as pas besoin de lire "php://input", jelix le fait déjà pour toi, et tu récupère le contenu dans un paramètre __httpbody. À toi ensuite de faire un json_decode. Je viens de compléter le manuel.

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Reply #4 Posted by YvesTan on 05/31/2010 22:25

OK ! vu... Dans la version 1.2b1 et je suis en 1.1. Ceci explique donc cela !

Je le précise sur le manuel ?

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Reply #5 Posted by laurentj on 06/01/2010 09:28

Ah oui désolé, c'est en effet que dans la version 1.2, pas 1.1. Donc ta solution est correcte.

  [Opened] comment récupérer les paramètres avec un controler jIRestController

Reply #6 Posted by YvesTan on 06/02/2010 09:03

Merci. J'ai vu que tu vais corrigé le manuel.

 
Page
  1. Url et paramètres >
  2. comment récupérer les paramètres avec un controler jIRestController