• 技术文章 >web前端 >js教程

    nodejs实现webservice的问题分析

    不言不言2019-02-28 13:32:25转载2317

    本篇文章给大家带来的内容是关于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);
        });
    });

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

    调用

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

    args = {
        key1: val1,
        key2: val2
    }

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

    如:

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

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

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

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

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

    需改写为(此处用使用Array<string>是参考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
        }
    }
    https://stackoverflow.com/que...







    20 小时前发布

    nodejs实现webservice问题总结

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

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

    调用

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

    args = {
        key1: val1,
        key2: val2
    }

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

    如:

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

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

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

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

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

    需改写为(此处用使用Array<string>是参考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
        }
    }
    https://stackoverflow.com/que...


    你可能感兴趣的



    评论

    默认排序 时间排序



    载入中...

    显示更多评论


    以上就是nodejs实现webservice的问题分析的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:node.js javascript
    上一篇:JavaScript中作用域链与执行环境的介绍(图文) 下一篇:react路由的简单用法(代码示例)
    Web大前端开发直播班

    相关文章推荐

    • 浅析nodejs和Java访问远程服务器的服务• nodejs垃圾回收的详细介绍• 如何安装nodejs程序• nodejs配置文件处理的方法介绍• NodeJs中Fs模块的详细介绍(代码示例)• 什么是nodejs的核心模块
    新人一分购

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网