Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je voudrais mettre en place un API, ou plutot un webservice avec ZF. J'ai lu pas mal de sujet sur çà, et je n'arrive pas à faire un choix.
Je fourni une api ou un webservice pour que les developpeurs (pas forcement avec Zend) puissent récupérer des infos de la bdd, en xml ou json.
Doit-on faire çà en GET (comme l'api de twitter par exemple), url visible ?
Le composant Zend_Rest est-il le plus pratique, le plus sécurisé ?
Merci
Fabrice
Dernière modification par __fabrice (18-06-2012 20:51:14)
Hors ligne
tu peut faire du soap avec zend cela marche super bien
Hors ligne
Salut,
Ha ok, Soap... On me conseille plutot REST (Zend_Rest), qui est plus facile parait-il. As tu des exemples avec Zend et Soap ?
Merci
Fabrice
Hors ligne
soap c'est super simple un controller client et un controller server .
<?php require_once APPLICATION_PATH.'/models/webservice.php'; ini_set("soap.wsdl_cache_enabled", "0"); require_once LIBRARY_PATH.'/Zend/Soap/AutoDiscover.php'; require_once LIBRARY_PATH.'/Zend/Soap/Server.php'; class WsController extends Zend_Controller_Action { public function indexAction() { //echo "lol"; if (is_null($this->getRequest()->getParam('wsdl'))) { // Traitement de la requ�te $_config= new Zend_Config_Ini(PROJET_PATH.'/configs/config.ini',"urlws",true); $server = new Zend_Soap_Server($_config->urlws->url.); //$server->setObject(new EasyWifi_Service()); $server->setClass('webservice'); $server->handle(); } else { // Retour de la WSDL //'Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence' $wsdl = new Zend_Soap_AutoDiscover(); /* $wsdl->setBindingStyle( array('style' => 'rpc') ); $wsdl->setOperationBodyStyle( array('use' => 'encoded' ));*/ $wsdl->setClass('webservice'); $wsdl->handle(); } exit; } } ?>
exemple de code controller Wscontroller . La doc soap pour Zend est super simple et tu as un Webservice qui fonctionne . Zend_Rest j'ai jamais réussi à le faire fonctionner lol mais faudrait que j'essai de nouveau
Hors ligne
Je teste REST comme j'ai vu dans divers exemple, dans un contexte MVC :
<?php class ApiController extends Zend_Rest_Controller { // Handle GET and return a list of resources public function indexAction() {} // Handle GET and return a specific resource item public function getAction() {} // Handle POST requests to create a new resource item public function postAction() {} // Handle PUT requests to update a specific resource item public function putAction() {} // Handle DELETE requests to delete a specific item public function deleteAction() {} }
Et en passant par curl pour tester
curl http://zf.test/api/
j'ai ce message
Fatal error: Class ApiController contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Zend_Rest_Controller::headAction) in
Je me suis qu'il fallait rendre la classe abstraite et que la classe qui hérite est celle qui doit servir d'API, mais çà change rien.
Une idée ?,
Fabrice
Dernière modification par __fabrice (04-06-2012 19:52:38)
Hors ligne
Salut,
Il faut juste implémenter la méthode "headAction"
Fabrice
Hors ligne
Pages: 1