Application de service Web Ruby - SOAP4R
Qu'est-ce que SOAP ?
Simple Object Access Protocol (SOAP) est une spécification de protocole pour l'échange de données.
SOAP est un protocole simple basé sur XML qui permet aux applications d'échanger des informations via HTTP.
Simple Object Access Protocol est une spécification de protocole pour l'échange de données. Il s'agit d'un protocole léger, simple, basé sur XML (un sous-ensemble du Standard Generalized Markup Language) conçu pour échanger des informations structurées et fixes sur le Web.
Pour plus de tutoriels SOAP, veuillez consulter :http://www.w3cschool.cc/soap/soap-tutorial.html。
Installation de SOAP4R
SOAP4R a été développé et implémenté par Hiroshi Nakamura pour les applications SOAP Ruby.
Adresse de téléchargement de SOAP4R :http://raa.ruby-lang.org/project/soap4r/。
Remarque :Votre environnement Ruby peut déjà avoir ce composant installé.
Sous Linux, vous pouvez également utiliser gem pour installer ce composant. La commande est la suivante :
Si vous développez dans un environnement Windows, vous devez télécharger le fichier compressé zip et l'installer en exécutant install.rb.
Service SOAP4R
SOAP4R prend en charge deux types de services différents :
- Service basé sur CGI/FastCGI (SOAP::RPC::CGIStub)
- Service autonome (SOAP::RPC:StandaloneServer)
Ce tutoriel présente comment configurer un service SOAP autonome. Les étapes sont les suivantes :
Étape 1 - Hériter de SOAP::RPC::StandaloneServer
Pour implémenter votre propre serveur autonome, vous devez écrire une nouvelle classe qui est une sous-classe de SOAP::RPC::StandaloneServer :
Remarque :Si vous souhaitez écrire un serveur basé sur FastCGI, vous devez hériter de la classe SOAP::RPC::CGIStub ; le reste du programme restera inchangé.
Étape 2 - Définir les méthodes de traitement
Ensuite, nous définissons les méthodes du service web. Ci-dessous, nous définissons deux méthodes : l'une additionne deux nombres, et l'autre divise deux nombres :
Étape 3 - Publier les méthodes de traitement
Ensuite, ajoutez les méthodes que nous avons définies sur le serveur. La méthode initialize est publique et utilisée pour les connexions externes :
Voici une explication de chaque paramètre :
| Paramètre | Description |
|---|---|
| receiver | L'objet contenant la méthode portant le nom de la méthode. Si vous définissez la méthode de service dans la même classe, ce paramètre estself。 |
| methodName | Le nom de la méthode appelée par la requête RPC. |
| paramArg | Noms des paramètres et modes des paramètres |
Pour comprendre les paramètresinoutetout, considérez la méthode de service suivante, qui nécessite deux paramètres d'entrée : inParam et inoutParam. Après l'exécution de la fonction, elle renvoie trois valeurs : retVal, inoutParam et outParam :
La méthode d'appel publique est la suivante :
Étape 4 - Démarrer le service
Enfin, nous instancions la classe dérivée et appelons la méthode start pour lancer le service :
Voici une explication des paramètres de la requête :
| Paramètre | Description |
|---|---|
| ServerName | Nom du service, vous pouvez choisir ce que vous voulez |
| urn:ruby:ServiceName | Ici urn:rubyest fixe, mais vous pouvez donner à votre service unServiceName unique |
| hostname | Spécifiez le nom d'hôte |
| port | Port du service Web |
Exemple
Ensuite, nous créons un service autonome en utilisant les étapes ci-dessus :
Exemple
Après avoir exécuté le programme ci-dessus, un service local écoutant sur le port 8080 est démarré, et deux méthodes sont exposées : add et div.
Vous pouvez exécuter le service ci-dessus en arrière-plan :
$ ruby MyServer.rb &
Client SOAP4R
En Ruby, la classe SOAP::RPC::Driver est utilisée pour développer des clients SOAP. Ensuite, examinons en détail l'utilisation de la classe SOAP::RPC::Driver.
L'appel d'un service SOAP nécessite les informations suivantes :
- Adresse URL du service SOAP (URL du point de terminaison SOAP)
- Espace de noms de méthode du service (URI de l'espace de noms de méthode)
- Nom de la méthode de service et informations sur les paramètres
Ensuite, nous allons créer un client SOAP étape par étape pour appeler les méthodes SOAP ci-dessus : add et div :
Étape 1 - Créer une instance de pilote SOAP
Nous pouvons instancier la classe SOAP::RPC::Driver pour appeler sa méthode new, comme indiqué ci-dessous :
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)
Voici une description des paramètres :
| Paramètre | Description |
|---|---|
| endPoint | L'adresse URL pour se connecter au service SOAP |
| nameSpace | L'espace de noms utilisé pour tous les RPC de l'objet SOAP::RPC::Driver. |
| soapAction | La valeur du champ SOAPAction utilisée dans l'en-tête HTTP. S'il s'agit de la chaîne "", la valeur par défaut estnil |
Étape 2 - Ajouter des méthodes de service
Pour ajouter des méthodes de service SOAP à SOAP::RPC::Driver, nous pouvons appeler les méthodes suivantes via une instance de SOAP::RPC::Driver :
driver.add_method(name, *paramArg)
Ce qui suit est une explication des paramètres :
| Paramètre | Description |
|---|---|
| name | Le nom de la méthode du service web distant |
| paramArg | Spécifiez les paramètres du programme distant |
Étape 3 - Appeler le service SOAP
Enfin, nous pouvons utiliser l'instance SOAP::RPC::Driver pour appeler le service SOAP :
result = driver.serviceMethod(paramArg...)
serviceMethod est le nom réel de la méthode du service SOAP, et paramArg est la liste des paramètres de la méthode.
Exemple
D'après les étapes ci-dessus, nous pouvons écrire le client SOAP suivant :
Exemple
Ci-dessus, nous n'avons présenté que brièvement le service Web de Ruby. Si vous souhaitez en savoir plus, vous pouvez consulter la documentation officielle :Service Web de Ruby
Autres extensions