Page 1 sur 1

Comment installer un webservice sur Apache ?

Posté : 15 nov. 2007, 19:08
par JulieT
Mon site est codé en PHP 5 et tourne sur Linux / Apache.
Un de mes partenaires me demande de mettre en place un "webservice" pour pouvoir communiquer avec mon site (récupérer des données).

Je n'ai aucune idée de comment implémenter cette solution, ni de quel logiciel "webservice" utiliser...
Quelqu'un pourrait-il m'indiquer un bon article ou m'aider pour que je commence quelque part ?

Merci d'avance !!

Posté : 15 nov. 2007, 19:18
par Berzemus
Quelles genres de données ? de contenu que tu as sur ton site ?

J'ai aussi vu des demandes du genre..
Classiquement, ça implique juste d'accepter des requêtes HTML en GET (par url, ils appellent ça, ils connaissent pas POST), et de fournir les données dans un format "facile" à analyser. D'habitude, du xml, sous format rss ou pas.

Ceci dit, si leurs informaticiens étaient bons, ils auraient pu chercher eux-même les données, c'est pas comme si c'était compliqué d'analyser une page php. (je vous conseille émuler un utilisateur sur de l'ASP avec le viewstate activé, c'est gran-dio-se.)

Mais s'ils parlent d'un accès a la bd, par exemple, la je ferais pas confiance.

Posté : 15 nov. 2007, 19:42
par zeus
Ta vision du webservice est quand même simpliste.

Il n'y a pas longtemps, j'ai participé au développement d'un webservice qui acceptait les données en POST, qui passait 3 niveaux de validation, qui retournait des données complexes sous un format XML.

Tout ça pour dire qu'un webservice, c'est une application normale qui n'accepte qu'une seule demande à la fois (pas de persistance de la connexion) et qui retourne des informations dans un format analysable par un programme (par exemple en XML)

Un flux RSS est un exemple de webservice sans connexion ;)

Posté : 15 nov. 2007, 22:05
par Invité
oui, c'est le genre de webservice dont parle Zeus que je dois utiliser.
Connaissez-vous une bonne doc qui expliquerait l'installation et l'utilisation ?

Posté : 15 nov. 2007, 23:07
par momox
En fait, un webservice, c'est grosso modo une simple page web, c'est tout.
L'application de ton partenaire va demander une URL a ton serveur, celle de ton webservice, page exemple, webservice.php.
Il va envoyer des données post ou get a cette page, qui va ensuite, les traiter et renvoyer les données dans le format voulu, que ce soit xml, json ou tout autre format de données.
@+

Posté : 15 nov. 2007, 23:11
par zeus
C'est comme si tu me demandais une documentation pour installer et utiliser un logiciel (dans le terme générique du terme) :?
Un webservice, c'est une application, c'est unique pour chaque client.

Je pense que c'est le nom qui te bloque ;)

Le principe général est le suivant :
1/ Réception d'une requête HTTP GET ou POST (c'est exactement la même chose que pour une page web "normale")
2/ Réalisation d'un code correspondant à la requête HTTP (encore une fois, c'est la même chose pour une page normale)
3/ Affichage d'un résultat en sortie (Et c'est encore la même chose que pour une page normale)

Je te donne un exemple simple : imagine que je dispose d'une base de donnée te permettant de retrouver chaque citoyen français grâce à leur numéro de sécurité sociale.

Interface web "normale"
La 1ère manière de l'utiliser est de se rendre sur mon site et de passer par une interface web "normale".
La 1ère partie de cette interface est un formulaire qui contient un simple champ texte et bouton de validation

Code : Tout sélectionner

<form action="recherche.php" method="GET"> n° sécurité sociale&nbsp;<input type="text" name="num_SS" value="" /><br /> <input type="submit" value="Rechercher" /> </form>
Si tu saisis un numéro et que tu valides, la page
recherche.php?num_SS=xxxxxxxxxxxxxx
va être appelée

Je dispose d'un second script "recherche.php" qui recherche en base de données les informations du membre et qui l'affiche :
<?php

// Récupération du n° de SS demandé
$num_SS = $_GET['num_SS'];

// Si le n° de SS est bien transmis
if ( $num_SS != '' )
{
	// Cette fonction se connecte à la base de données, sélectionne le membre et 
	// retourne un objet Membre contenant le détail du membre, FALSE si le 
	// membre est introuvable
	$o_membre = getMembre( $num_SS );
	
	// Si le membre recherché est inexistant
	if ( $o_membre === false )
	{
		echo "Le membre recherché est inexistant"
	} else {
		echo "
			<table>
				<tr>
					<td>Nom</td><td>". $o_membre->getNom() ."</td>
					<td>Prenom</td><td>". $o_membre->getPrenom() ."</td>
			</table>";
	}
} else {
	echo "Aucun numéro transmis";
}
?>
WebService
Un client me demande de lui fournir un flux XML qui lui permettra d'afficher les détail d'un client sur son site web mais en utilisant ma base de données. Comme je ne veux pas lui donner accès à ma base de données, je lui développe un webservice.

Il doit me fournir une requête de ce type :
recherche.php?num_SS=xxxxxxxxxxxxxx
(Tiens, c'est la même que dans l'interface web "normale" ;) )

Je développe donc un script PHP qui va lui retourner un flux XML contenant les informations du membre recherché :
<?php

// Récupération du n° de SS demandé
$num_SS = $_GET['num_SS'];

// Si le n° de SS est bien transmis
if ( $num_SS != '' )
{
	// Cette fonction se connecte à la base de données, sélectionne le membre et 
	// retourne un objet Membre contenant le détail du membre, FALSE si le 
	// membre est introuvable
	$o_membre = getMembre( $num_SS );
	
	// Si le membre recherché est inexistant
	if ( $o_membre === false )
	{
		echo "<result>
				<code>-1</code>
				<message>Le membre recherché est inexistant</message>
			</result>";
	} else {
		echo "<result>
				<code>0</code>
				<message>
					<membre>
						<nom>". $o_membre->getNom() ."</nom>
						<prenom>". $o_membre->getPrenom() ."</prenom>
					</membre>
				</message>
			</result>";
	}
} else {
		echo "<error>
				<code>-2</code>
				<message>Aucun numéro transmis</message>
			</error>";
}
?>
Tu remarques que le code est identiques, sauf la sortie générée. Plutôt que de générer un contenu HTML, j'ai généré un contenu XML ;)

Posté : 16 nov. 2007, 00:16
par Berzemus
Ta vision du webservice est quand même simpliste.
Non, du tout, mais plutôt celle de ceux qui le demandent (l'administration..) :wink:

Posté : 16 nov. 2007, 00:20
par zeus
Ce que je voulais dire, c'est que c'est un peu plus poussé que "juste des données en GET" et qu'un webservice peut être essentiel dans le cas d'une société qui vend une base de données à jour et qui préfère mettre à disposition un webservice plutôt que de donner un accès au serveur de données.

De plus, même si c'est faisable de parser une page HTML, comme le XML est un langage de flux de données, c'est quand même plus pratique que de parser du HTML. De plus, c'est plus "vendable" xd

Posté : 16 nov. 2007, 12:48
par Berzemus
oui, j'en suis bien conscient ;) je me suis un peu trop basé sur mon milieu professionel (je croise rarement (lisez quasi jamais) de professionnels du web, c'est pour ça que je me suis inscrit sur ce site de rencontre :twisted: ). La-bas, pouvoir interroger une application directement par url, c'est un must. (ils commencent à peine à sortir de l'époque des mainframes). De plus, après mes études ou il fallait surtout pas compter sur un webservice (t'es quoi toi ?) et donc analyser les pages, mon jugement est légèrement faussé.

Il est clair que dans le privé, entre pro's, ça se passe différemment.. (mais je doute que ce soit partout.. vivement le jour ou la compagnie de bus diffuse ses horaires par rss..)

Posté : 19 nov. 2007, 01:11
par ouckileou
La-bas, pouvoir interroger une application directement par url, c'est un must. (ils commencent à peine à sortir de l'époque des mainframes).
Montre leur les possibilités de CICS pour faire des fournisseur/client de services web en Cobol/C++ sur mainframe, ils vont kiffer ;)