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

nodejs實作webservice的問題分析

Feb 28, 2019 pm 01:32 PM
javascript node.js

這篇文章帶給大家的內容是關於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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

javascript如何使用insertBefore

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

如何在JavaScript中取得HTTP狀態碼的簡單方法

See all articles