Rumah > hujung hadapan web > tutorial js > nodejs实现webservice的问题分析

nodejs实现webservice的问题分析

不言
Lepaskan: 2019-02-28 13:32:25
ke hadapan
3837 orang telah melayarinya

本篇文章给大家带来的内容是关于nodejs实现webservice的问题分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

库,工具

node-soap
soapui

创建

注意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);
    });
});
Salin selepas log masuk
Salin selepas log masuk

个人喜欢promise形式,之后调用其它函数都是可以两种方式实现的,若是异步形式,需要在你调用的函数名后添加 "Async"。

调用

参数数据只有一层没什么特殊,如:

args = {
    key1: val1,
    key2: val2
}
Salin selepas log masuk
Salin selepas log masuk

若是参数里又套了一层,node-soap是不会根据wsdl自动生成带有namespace prefix的数据,传到服务器之后会解析xml失败。

如:

let val2: Array<dataType> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}
Salin selepas log masuk
Salin selepas log masuk

这个时候就需要在传入数据时做些额外工作,修改为:

let val2: Array<dataType> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}
Salin selepas log masuk
Salin selepas log masuk

上面这种dataType是生成xml时,其类型在xml中有声明;若是没有声明,就又是另一中写法,如:

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

需改写为(此处用使用Array是参考soapui生成的namespace prefix,具体其它类型实现应该可通用);

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
    }
}
Salin selepas log masuk
Salin selepas log masuk
https://stackoverflow.com/que...







                                                   20 小时前发布                                                                                            

nodejs实现webservice问题总结

  • node.js

  • javascript

                                               16 次阅读                                                 ·                                                 读完需要 6 分钟                                                                                                                    



                           1                        

                                                                                                                                           

库,工具

node-soap
soapui

创建

注意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);
    });
});
Salin selepas log masuk
Salin selepas log masuk

个人喜欢promise形式,之后调用其它函数都是可以两种方式实现的,若是异步形式,需要在你调用的函数名后添加 "Async"。

调用

参数数据只有一层没什么特殊,如:

args = {
    key1: val1,
    key2: val2
}
Salin selepas log masuk
Salin selepas log masuk

若是参数里又套了一层,node-soap是不会根据wsdl自动生成带有namespace prefix的数据,传到服务器之后会解析xml失败。

如:

let val2: Array<dataType> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}
Salin selepas log masuk
Salin selepas log masuk

这个时候就需要在传入数据时做些额外工作,修改为:

let val2: Array<dataType> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}
Salin selepas log masuk
Salin selepas log masuk

上面这种dataType是生成xml时,其类型在xml中有声明;若是没有声明,就又是另一中写法,如:

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

需改写为(此处用使用Array是参考soapui生成的namespace prefix,具体其它类型实现应该可通用);

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
    }
}
Salin selepas log masuk
Salin selepas log masuk
https://stackoverflow.com/que...

  • nodejs实现webservice的问题分析


你可能感兴趣的



评论                                                    

默认排序                        时间排序



载入中...

显示更多评论


Atas ialah kandungan terperinci nodejs实现webservice的问题分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan