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