[英]Convert CURL command to NPM request call
我已經使用此處所示的規定的卷曲方法成功調用了Watson Speech-To-Text API。 我使用child_process
節點模塊從節點腳本中調用Curl
。
我正在嘗試過渡到使用request
模塊執行相同的網絡請求(獲取轉錄的json轉儲)。 我有一些麻煩撰寫在適當的HTTP請求中requests
的條款。 到目前為止,我有:
request({
url: 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?continuous=true×tamps=true',
method: 'POST',
headers: {
'Content-Type': 'audio/wav',
'Transfer-Encoding':'chunked',
'Authorization': 'Basic <usernameRedacted:passwordRedacted>'
},
body: {
'--data-binary': audioFileName
}
}, function(error, response, body){
if(error) {
console.log(error);
} else {
console.log(response.statusCode, body);
}
});
我正在throw new TypeError('first argument must be a string or Buffer');
或有時(在正確修改請求調用之后)400 http響應代碼。 因此,據我了解, Curl
只是一個運行相同的基礎Post請求的Unix進程,大概我應該能夠完成這項工作。 不幸的是,我似乎這里缺少一些關鍵的修復程序。 此外,關於身份驗證以及我如何將二進制數據( CURL
--data-binary)加載到POST主體中,NPM requests
README對我而言尚不清楚。
任何幫助將不勝感激。
由於所有請求都是流,因此可以使用pipe()
任何類型的數據直接流式傳輸到請求中。 從技術上講,您不需要添加Content-Type
標頭,因為request可以根據輸入的文件擴展名來確定它,但是,如果您顯式傳遞它,則request將使用您自己設置的那一組而不是自動確定它。
同樣對於身份驗證,請求將采用帶有用戶名和密碼的auth
選項以及其他一些選項。 請參閱request
HTTP Auth Docs ,以獲取有關如何使其工作的詳細信息。
我提供了有關如何將數據通過管道傳輸到請求以及如何使用HTTP Basic Auth進行請求的示例
const request = require('request');
const fs = require('fs');
fs.createReadStream(audioFileName)
.pipe(request({
uri: 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?continuous=true×tamps=true',
method: 'POST',
auth: {
user: '',
pass: ''
},
headers: {
'Content-Type': 'audio/wav',
'Transfer-Encoding': 'chunked'
}
}, (err, res, body) => {
if (err)
console.log(err);
else
console.log(body);
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.