![](/img/trans.png)
[英]How can I get Tableau Dashboard objects other than the active one using Tableau Javascript API?
[英]Tableau REST API: Using Javascript to get the Token
我是REST API的入門者,我不知道該如何進行。 我安裝了Postman並成功獲得了令牌,但是我不確定如何在javascript中發送原始XML有效內容。
<tsRequest>
<credentials name ="XXX" password="YYY" >
<site contenturl = "" />
</credentials>
</tsRequest>
我有 :
httpRequest.open('POST', 'http://MY-SERVER/api/2.4/auth/signin', false);
httpRequest.setRequestHeader("Content-type", "application/xml");
不知道如何添加xml有效負載。 我可以訪問Tableau Server(MY-SERVER)以及其他所有內容。 任何幫助將不勝感激!
謝謝!
距離越來越近,您只需要使用send
方法發送XML: https : //developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
只需在輸入時確保將XML正確編碼為javascript。 因此,如果您在XML中使用雙引號,請確保使用單引號在javascript中聲明字符串(例如var data = '<credentials name="XXX" >';
除了@AnilRedshift答案之外,以下是起作用的代碼:
login_details=[];
function getToken() {
var url = "http://yourServerAddress/api/2.0/auth/signin";
var params = "<tsRequest><credentials name='Username' password='UserPassword' ><site contentUrl='' /></credentials></tsRequest>";
return zuo = new Promise(function(resolve,reject){
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.withCredentials = true;
xhr.onload= function(){
if (this.status === 200) {
var parsed_xml = JSON.parse(JSON.stringify(x2js.xml_str2json(xhr.responseText)))
login_details.push(parsed_xml.tsResponse.credentials._token); login_details.push(parsed_xml.tsResponse.credentials.site._id);
resolve(login_details);
}
}
xhr.onerror=reject;
xhr.send();
})
}
function getWorkbooks(){
var url = "http://serveraddress//api/2.3/sites/"+login_details[1]+"/workbooks?pageSize=1000";
return zuo = new Promise(function(resolve,reject){
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("X-Tableau-Auth",login_details[0]);
xhr.onload= function(){
if (this.status === 200) {
var workbooks = JSON.parse(JSON.stringify(x2js.xml_str2json(xhr.responseText)))
for (var f=0;f<workbooks.tsResponse.workbooks.workbook.length;f++){
if(workbooks.tsResponse.workbooks.workbook[f].project._name=="Default"){
workbooks_list.push(workbooks.tsResponse.workbooks.workbook[f]._id)
}
resolve();
}
}
}
xhr.onerror= function(){
console.log(xhr.responseText);
}
xhr.send();
})
}
使用以下代碼調用代碼:
getToken()
.then(function(login_details){
console.log(login_details[0]+"/"+login_details[1]);
})
.then(function(){
getWorkbooks();
})
getToken()
函數獲取必須在所有后續調用中使用的登錄令牌。 getWorkbooks()
獲取“默認”項目中的所有儀表板,但這種請求可用於所有GET類型的請求。
請注意,這種方法將硬編碼的值用於密碼和用戶名,這通常不是最佳做法。 最好使用服務器端腳本或加密(更好,但仍然使用flav)。
您可以在此處找到完整的分步教程和運行代碼: http : //meowbi.com/2017/10/23/tableau-fields-definition-undocumented-api/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.