Maison  >  Article  >  développement back-end  >  Comment mettre en œuvre du savon dans Golang

Comment mettre en œuvre du savon dans Golang

PHPz
PHPzoriginal
2023-04-25 10:44:081656parcourir

SOAP (Simple Object Access Protocol) est un protocole basé sur XML utilisé pour la communication entre les applications dans un environnement distribué. Lors de la mise en œuvre de SOAP, vous devez souvent choisir un langage de programmation pour implémenter le protocole lui-même et ses opérations associées. À cet égard, le langage Go, en tant que langage de programmation typé statiquement, est très approprié pour implémenter le protocole SOAP.

1. Le concept de base de SOAP

SOAP est apparu pour la première fois en 1998. Il s'agit d'un protocole ouvert d'échange d'informations basé sur XML. Il introduit le concept de communication entre applications distribuées basées sur le Web. Des types de données plus volumineux et complexes peuvent être transmis via le protocole SOAP. Les principaux scénarios d'application du protocole SOAP incluent : l'appel de procédure à distance (RPC), l'architecture orientée services (SOA), etc.

Le protocole SOAP se compose de trois parties :

1. En-tête : L'en-tête est facultatif dans le message SOAP et est utilisé pour définir le contexte, l'authentification, etc. avant les opérations liées au protocole SOAP.

2. Corps : Le corps est obligatoire dans le message SOAP. Il est utilisé pour transmettre les données liées au message SOAP.

3. Échec : le message d'échec est facultatif et est utilisé pour fournir des informations de rapport d'échec lorsque l'opération SOAP échoue ou qu'une exception se produit.

2. Sélection de la bibliothèque SOAP golang

Golang est un langage de programmation typé statiquement, caractérisé par une grande efficacité et peu de dépendances. Il est très approprié pour la mise en œuvre et le développement de services Web. Golang possède sa propre bibliothèque SOAP, appelée Go-SOAP, qui est une bibliothèque SOAP légère et facile à utiliser.

Lors de l'utilisation de la bibliothèque Go-SOAP, nous pouvons choisir les différentes bibliothèques suivantes :

  1. github.com/tiaguinho/gosoap
  2. github.com/hooklift/gowsdl
  3. github.com/shutej/go2xmlrpc

3 .Étapes pour implémenter SOAP dans golang

  1. Installer la bibliothèque correspondante

Avant d'utiliser la bibliothèque Go-SOAP, vous devez installer Golang et définir le chemin correspondant dans la variable d'environnement. Ensuite, vous devez télécharger la bibliothèque Go-SOAP. Parmi eux, github.com/tiaguinho/gosoap est le plus couramment utilisé dans la bibliothèque Go-SOAP. Vous pouvez le télécharger localement en utilisant directement la commande go get :

go get github.com/tiaguinho/gosoap

  1. Define. Requête SOAP

Lors de la définition d'une requête SOAP, nous devons utiliser le type de structure Go pour définir le corps du message XML. Les requêtes SOAP ont deux attributs : méthode et paramètres. La méthode définit le nom de la méthode de service à appeler et les paramètres définissent les valeurs des paramètres de la méthode de service appelée.

Voici un exemple de construction d'une requête SOAP adressée au Bureau national des statistiques pour obtenir des données sur le PIB national :

type GetGDPRequest struct {

Year int `xml:"Year"`

}

type GetGDPResponse struct {

XMLName xml.Name `xml:"GetGDPResponse"`
GetGDPResult float64 `xml:"GetGDPResult"`

}

type GDPService struct {

Client *soap.Client

}

func NewGDPService() *GDPService {

return &GDPService{
    Client: soap.NewClient("http://www.stats.gov.cn/nbsuisswsxxcx/xxcx/ydgdp_lrsj/"),
}

}

func (service *GDPService) GetGDP(year int) (float64, erreur) {

res := &GetGDPResponse{}
if err := service.Client.Call("GetGDP", GetGDPRequest{Year: year}, res); err != nil {
    return 0, err
}
return res.GetGDPResult, nil

}

  1. Envoi d'une requête SOAP

Quand En envoyant une requête SOAP, nous devons envoyer le contenu de la requête construite au serveur et, après avoir obtenu la réponse du serveur, l'analyser dans les données XML correspondantes. Enfin, nous pouvons le convertir en un type de données concret du langage Go.

Ce qui suit est un exemple de code pour obtenir les données du PIB national 2019 du Bureau national des statistiques :

func main() {

gdpService := NewGDPService()
gdp, err := gdpService.GetGDP(2019)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("2019年全国GDP数据是:", gdp)

}

4. Comparaison entre SOAP et RESTful

Bien que SOAP et RESTful soient tous deux. utilisé pour les protocoles de services Web, mais il existe de nombreuses différences entre eux. Voici les principales différences entre SOAP et RESTful :

  1. Différentes méthodes de transmission : SOAP utilise XML pour transférer les données entre le serveur et le client, tandis que RESTful utilise des formats tels que JSON pour le transfert de données.
  2. Différents frais généraux : pendant le processus de transmission de données, SOAP doit transmettre une série de requêtes comprenant des en-têtes, des corps, des défauts, etc. Lors du processus de transmission de données du protocole RESTful, le format de la demande et de la réponse est très concis.
  3. Performances différentes : étant donné que SOAP contient une grande quantité d'informations sur les requêtes et les réponses, notamment les en-têtes, les corps, les défauts, etc., les performances de SOAP sont beaucoup plus lentes que celles de RESTful lors de la transmission de données volumineuses.

En résumé, lors du choix d'un protocole de service Web, vous devez le choisir en fonction de la situation spécifique, en tenant compte de facteurs tels que sa surcharge et ses performances.

5. Résumé

Dans les systèmes distribués, en raison de la complexité des différents services, nous devons souvent utiliser le protocole SOAP. Golang est un langage de programmation typé statiquement, et sa bibliothèque Go-SOAP peut également facilement implémenter le protocole SOAP. Que ce soit en termes de quantité de données transmises ou de performances, utiliser Golang pour implémenter le protocole SOAP peut obtenir de bonnes performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn