Maison  >  Article  >  interface Web  >  Analyse des problèmes de mise en œuvre du service Web par nodejs

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

不言
不言avant
2019-02-28 13:32:253723parcourir

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);
    });
});

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
}

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>

À 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>

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>

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>
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);
    });
});

args = {
    key1: val1,
    key2: val2
}

Rapport

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}</datatype>

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

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>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer