Maison > interface Web > js tutoriel > le corps du texte

Analyse des problèmes de mise en œuvre du service Web par nodejs

不言
Libérer: 2019-02-28 13:32:25
avant
3777 Les gens l'ont consulté

Le contenu de cet article concerne l'analyse du problème de l'implémentation du service Web par nodejs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Bibliothèques, outils

node-soap
soapui

Create

Faites attention à l'ordre des paramètres dans args

const soap = require('soap');
let URL = "你的wsdl路径,可以是url或者本地文件";
// 注意参数顺序!!!!!!!!!
let args = {
    key1: val1,
    key2: val2
};
// promise创建
let client = await soap.createClientAsync(URL);

// callback创建
soap.createClient(url, function(err, client) {
    client.MyFunction(args, function(err, result) {
          console.log(result);
    });
});
Copier après la connexion
Copier après la connexion

Personnellement, j'aime le formulaire de promesse. Ensuite, l'appel d'autres fonctions peut être implémenté de deux manières. S'il s'agit d'un formulaire asynchrone, vous devez ajouter "Async" après le nom de la fonction que vous appelez.

Appel

Il n'y a rien de spécial à n'avoir qu'une seule couche de données de paramètres, comme :

args = {
    key1: val1,
    key2: val2
}
Copier après la connexion
Copier après la connexion

S'il y a une autre couche dans le paramètre, node-soap ne sera pas automatiquement basé sur wsdl Générer des données avec un préfixe d'espace de noms, et le XML ne pourra pas être analysé après avoir été transmis au serveur.

Par exemple :

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>
Copier après la connexion
Copier après la connexion

À ce stade, vous devez effectuer un travail supplémentaire lors de la transmission des données :

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}</datatype>
Copier après la connexion
Copier après la connexion

Ce qui précède. dataType doit générer du XML Lorsque son type est déclaré en XML ; sinon, il est écrit d'une autre manière, par exemple :

// dataType或namespace prefix在生成xml未声明
let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>
Copier après la connexion
Copier après la connexion

doit être réécrit comme (ici en utilisant Array est généré en référence au préfixe d'espace de noms soapui, l'implémentation spécifique d'autres types devrait être universelle );

let val2: Array<string> = [
        val3,
        val4
    ];
let args = {
    attributes: {
       'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'
    },
    key1: val1,
    key2: {
        "arr:string": val2
    }
}</string>
Copier après la connexion
Copier après la connexion
https://stackoverflow.com/que...







                                                                                                                                                                                                                                                                                                                                                    La lecture prend 6 minutes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

Bibliothèques, outils


node-soap
soapui

créer Faites attention à l'ordre des paramètres dans args

Personnellement, j'aime le formulaire de promesse. Ensuite, l'appel d'autres fonctions peut être implémenté de deux manières. S'il s'agit d'un formulaire asynchrone, vous devez le faire. ajoutez "Async" après le nom de la fonction que vous appelez ". Appel Il n'y a rien de spécial à n'avoir qu'une seule couche de données de paramètres, comme : S'il y a une autre couche dans le paramètre, node-soap ne sera pas automatiquement basé sur wsdl Générer des données avec un préfixe d'espace de noms, et le XML ne pourra pas être analysé après avoir été transmis au serveur. Par exemple :

À ce stade, vous devez effectuer un travail supplémentaire lors de la transmission des données :

Ce qui précède. dataType doit générer du XML Lorsque son type est déclaré en XML ; sinon, il est écrit d'une autre manière, par exemple :

doit être réécrit comme (ici en utilisant Array est généré en référence au préfixe d'espace de noms soapui, l'implémentation spécifique d'autres types devrait être universelle );


https://stackoverflow.com/que...

const soap = require('soap');
let URL = "你的wsdl路径,可以是url或者本地文件";
// 注意参数顺序!!!!!!!!!
let args = {
    key1: val1,
    key2: val2
};
// promise创建
let client = await soap.createClientAsync(URL);

// callback创建
soap.createClient(url, function(err, client) {
    client.MyFunction(args, function(err, result) {
          console.log(result);
    });
});
Copier après la connexion
Copier après la connexion

args = {
    key1: val1,
    key2: val2
}
Copier après la connexion
Copier après la connexion

Rapport

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>
Copier après la connexion
Copier après la connexion

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}</datatype>
Copier après la connexion
Copier après la connexion

// dataType或namespace prefix在生成xml未声明
let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>
Copier après la connexion
Copier après la connexion

let val2: Array<string> = [
        val3,
        val4
    ];
let args = {
    attributes: {
       'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'
    },
    key1: val1,
    key2: {
        "arr:string": val2
    }
}</string>
Copier après la connexion
Copier après la connexion

Vous pourriez être intéressé
  • Analyse des problèmes de mise en œuvre du service Web par nodejs

Afficher plus de commentaires


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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!