Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'ai developpé une appli mvc avec le zend framework, maintenant je souhaite passer a la seconde étape: creer des services web.
le but :
Je souhaiterai pouvoir garder l'architecture mvc de mon appli et y integrer un/des service web (soap)
le probleme
Je ne trouve pas de doc pour creer des web services avec le zend_framework (et non pas faire appel à un service existant);
Les question ++ :
- en googolant pas mal , je suis tombé sur des Zend_Server_soap qui n'exite pas dans le framework (1.0.2)!!??
- Une question theorique : quelle est la diference entre REST et SOAP (si vous avez des liens interessants ...)
merci d'avance de vos lumières
ichevc
Hors ligne
Bonjour,
Si tu veux créer un "vrai" service web avec SOAP, WSDL & co, il n'y a pas de fonction dans le ZF, parce que ça existe en natif en PHP :
http://talks.php.net/show/torkey06/19 (c'est un peu vieillot, mais c'est un exemple hyper simple)
REST (à ma connaissance) ça n'est pas vraiment une norme, c'est une façon d'appeler des URL qui vont effectuer des actions. Les paramètres sont dans l'URL (en get ou via des URL plus sympa) et la réponse du service est en XML. C'est une façon hyper light de faire des webservices.
A+, Philippe
Hors ligne
Heu il y a les classe Zend_Serveur pour ça il me semble
REST est un moyen simple de faire des WS il peut être amméloré en utilisant un paquet XML ha doc (comme pour la réponse) envoyé en PUT ou POST au serveur en guise de requête ainsi les paramètre ne traînent pas dans les URL et tu peux passer des structures complexe.
mais ça reste très ligth
A+JYT
Hors ligne
merci pour vos réponses.
J'ai déjà developpé des services web (tres tres simples) avec les fonctions native php5.
Ce que j'esperais, c'est pouvoir facilement utiliser l'architecture mvc du framework pour le service web (et la je vois pas trop comment faire).
@sekaijin j'ai regardé le répertoire server :
y a une classe abstraite qui ne m'aide pas beaucoup, une interface tres tres light
et une partie (package si on peut dire) reflection .
en résumer : je ne voit pas comment l'utiliser (si je dérive la classe abstraite et implemente l'interface je me sens pas plus avancé)
merci pour les info pour REST vais creuser ça en parallèle.
ichevc
Dernière modification par ichevc02 (08-11-2007 16:05:22)
Hors ligne
J'avais fait un service web avec Zend_Rest_Server avant ZF 1.0, ca fonctionnait très bien.
Sinon tu peux utiliser SOAP, en mode WSDL (ou pas d'ailleurs) , c'est vraiment très puissant.
Le Zend Studio ( pour information ), est capable de générer un WSDL en fonction d'une classe et de ses méthodes.
Hors ligne
Julien a écrit:
J'avais fait un service web avec Zend_Rest_Server avant ZF 1.0, ca fonctionnait très bien.
Sinon tu peux utiliser SOAP, en mode WSDL (ou pas d'ailleurs) , c'est vraiment très puissant.
Le Zend Studio ( pour information ), est capable de générer un WSDL en fonction d'une classe et de ses méthodes.
utiliser le générateur de ZS avec précautions car pour l'avoir utiliser c'est loin d'être parfait j'ai fini par écrire mon WSDL à la main
quant à SOAP sous PHP5 le client ne sait pas invoquer un service avec pièce jointe.
je n'ai pas encore porté mon des et je ne sais si je le ferais mais sous php4 dans mon framework j'avais une architecture de service avec un seul point d'entrée et un dispatcher comme celui de ZF MVC il me suffisait d'écrire une classe Service pour que ses méthodes soient publiée en REST SOAP et phpStream. exactement comme on fait un controleur dans MVC je fait un controleur de services dans ce truc.
je trouve que de ce côté là ZF n'est pas super bien loti surtout comparer à des truc comme AXIS
a part ça il me semble avoir vu un tuto sur le net de mise en oeuvre de Zend_Soap_Server
A+JYT
Hors ligne
Re bonjour à tous,
je vous fais un point de ce que j'ai découvert
J'ai télécharger dans l'incubateur le "package" SOAP avec notemment Zend_Soap_AutoDiscover qui permet de generer dynamiquement le wsdl (entre autre) : génial.
j'ai donc fait un petit test
$server = new Zend_Soap_AutoDiscover();
$server->setClass('MaClasseDeServiceWeb');
$server->handle();
et ma petite classe de test :
class MaClasseDeServiceWeb {
public function untest($var1) {
return 'Salut toi';
}
/**
* Enter description here...
*
* @param object $toto
* @return string
*/
public function maFonctiontest(IpabDocument $toto){
return 'coucou cédric';
}
}
Alors :
si je fais appel via un navigateur à mon service web, il me renvoie un wsdl généré dynamiquement : Génial.
Ensuite vient le probleme des types , j'ai mis les tags phpdoc car la classe s'en sert pour les types :
(si je met @param string $toto je me retrouve avec un "xsd:string")
pour avoir une structure je suis obligé de preciser le type object (et nom le type reel de mon objet).
par contre le package est incapable de creer des types complexe (aparemment)
Voila, je ne sais pas si ca servira à quelqu'un ...
ichevc
Hors ligne
Merci pour ce retour, je me suis permis d'ajouter [SOAP,WSDL] dans le titre du message pour permettre à des gens intéressés de tomber sur ton message plus facilement.
A+, Philippe
Hors ligne
Petite "astuce"
Pour pouvoir utiliser le Zend_Soap_AutoDiscover avec le Zend_Controller (donc garder la structure mvc):
il y a quelque modifs à apporter aux classes Zend_Soap_AutoDiscover et Wsdl (à cause du routage)
j'ai trouvé ces infos ici :
http://osdir.com/ml/php.zend.framework. … 00457.html
Dernière modification par ichevc02 (13-11-2007 16:15:04)
Hors ligne
Bon mauvaise nouvelle :
j'arrive a faire fonctionner tres bien un webservice avec le Zend_soap avec les type simple.
En cherchant un peu et en fouillant le code , il n'est pas possible de faire fonctionner le Zend_auto_discover et plus genéralement de Zend_Wsdl avec des custom types :-( .
Il va falloir attendre ou ecrire les wsdl à la main.
source :
constat perso + bug tracker Zend Framework :
http://framework.zend.com/issues/browse/ZF-1586
Hors ligne
bonjour je teste pour installer un serveur soap sur un serveur en https . Alors le serveur fonctionne j'ai suivi le livre Zend Framework et j'ai bien le message enveloppe.
Le pb vient pour le client , j'ai ce message d'erreur "looks like we got no XML document" et en cherchant je trouve cela dans la doc officiel pour le client "'local_cert' et 'passphrase' : options d'authentification HTTPS. " mais je ne voit pas comment l'utiliser ?
Merci de votre aide
cdt
Cédric
Hors ligne