J'essaie de configurer WebAPI de Tropo avec un site Drupal, et je pensais que je créerais simplement un rappel hook_menu () pour example.com/tropo, puis utiliser le rappel hook_menu que je viens de créer pour consommer l'appel d'API de Tropo ( qui contient un simple tableau JSON de données), puis répondez.
Je peux faire la partie réponse assez facilement ... construire les données, drupal_json_output () et quitter (qui retourne simplement le JSON fondamentalement).
La partie avec laquelle je rencontre des problèmes est d'obtenir les données envoyées au rappel du menu / tropo ... Je ne peux accéder à aucune donnée en utilisant l'une des méthodes suivantes:
$json = file_get_contents("php://input"); // returns NULL
(ci-dessous utilise le module inputstream :)
$json = file_get_contents("drupal://input"); // also returns NULL
J'ai vérifié ce que font certains autres modules, et il semble qu'ils utilisent hook_init pour récupérer le JSON. Est-ce la méthode préférée? J'adorerais pouvoir le faire dans hook_menu et utiliser mon propre chemin et autres ...
Sinon, serais-je mieux d'écrire mon propre script PHP et de courir en dehors de Drupal, en faisant juste un bootstrap pour la base de données si j'en ai besoin?
Réponses:
Eh bien, il s'avère que j'obtenais les données, mais j'ai oublié de les décoder ...
Dans mon rappel hook_menu:
Ensuite, je peux jouer autant que je le voudrais avec la valeur reçue en $.
En outre, le inputstream module est précieux pour me laisser obtenir au courant d'entrée plus d'une fois (si vous essayez d' utiliser
php://input
plus d'une fois, la deuxième fois, et ceux qui suivent, retournera NULL).Comme note supplémentaire, je viens de remarquer aujourd'hui un nouveau module qui pourrait être un moyen encore plus simple de gérer cela: le contenu en JSON
la source
Le serveur REST qui fait partie du module Services le fait automatiquement pour JSON ainsi que pour d'autres formats: http://drupal.org/project/services
Il prend également en charge Inputstream (Inputstream a été conçu pour gérer à la fois la vérification OAuth et le décodage des services du même flux).
la source