首頁 > web前端 > js教程 > nodejs實作webservice的問題分析

nodejs實作webservice的問題分析

不言
發布: 2019-02-28 13:32:25
轉載
3829 人瀏覽過

這篇文章帶給大家的內容是關於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
}</datatype>
登入後複製
登入後複製
這個時候就需要在傳入資料時做些額外工作,修改為:

let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}</datatype>
登入後複製
登入後複製
上面這種dataType是產生xml時,其類型在xml中有聲明;若是沒有聲明,就又是另一中寫法,如:

// dataType或namespace prefix在生成xml未声明
let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>
登入後複製
登入後複製
需改寫為(此處用使用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
    }
}</string>
登入後複製
登入後複製
https://stackoverflow.com/que...







##-火星中加入火星中
  • ##111112

    ##B水平等火星中                                                                                                                                                   
  • 122

                                                                                                                                                   

    ###########                                                                                                                                               ####################################                                                                     ###                                          上上#####nodejs0####)中實作問題上摘要###n####node

                                            之後閱讀                                                 ·                                                作用內使用 6 分鐘                                                                                        




  • nodejs實作webservice的問題分析

    #                            
  • 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
}</datatype>
登入後複製
登入後複製
###這個時候就需要在傳入資料時做些額外工作,修改為:###
let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}</datatype>
登入後複製
登入後複製
###上面這種dataType是產生xml時,其類型在xml中有聲明;若是沒有聲明,就又是另一中寫法,如:###
// dataType或namespace prefix在生成xml未声明
let val2: Array<datatype> = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}</datatype>
登入後複製
登入後複製
###需改寫為(此處用使用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
    }
}</string>
登入後複製
登入後複製
###https://stackoverflow.com/que...######################## #############################回報################################################################## #########################你可能感興趣的#################### ###################評論####                                                 時間排序########################載入中...######顯示更多註解######## ###################

以上是nodejs實作webservice的問題分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板