2017-09-19 69 views
1

我已經和節點應用mainApp,關於CF空間中運行,在這個節點應用即時得到其他應用name(在相同的空間部署的),我想從得到它的應用程序guid,我該怎麼做?獲取應用程序,從名字的GUID - 通過代碼

這是我試過(我試圖讓在這個空間中的所有應用程序,並從​​搜索特定的應用程序,但我得到了HTTP 401 - unauthorized

  1. 任何想法我如何能得到從部署到CF應用程序GUID的應用程序(假設我已經在應用名稱)

  2. 有一種更好的方式來實現這一目標?

getAllApps:() => { 

     return new Promise((resolve, reject) => { 

      rp({ 
       uri: 'https://' + CF_API + '/v2/apps', 
       json: true 

      }).then((data) => { 
       "use strict"; 
       console.log("apps data: " + data); 
       resolve(data); 
      }); 
     }) 

回答

1

您必須首先獲取訪問令牌並將其傳遞到您的問題中的請求標頭中。 請參見下面的例子將得到應用GUID:

var request = require('request-promise'); 

request({ 
     "method":"POST", 
     "uri": "https://login.ng.bluemix.net/UAALoginServerWAR/oauth/token", 
     "json": true, 
     "headers": { 
     "content-type": "application/x-www-form-urlencoded", 
     "authorization": "Basic Y2Y6", 
     "accept": "application/json" 
     }, 
     "form" : { 
     "grant_type": "password", 
     "username": "<your Bluemix id>", 
     "password": "<your Bluemix password>" 
     } 
}).then(function(response) { 
     return response.access_token; 
}).then(function(token) { 
    return request({ 
    "method":"GET", 
    "uri": "https://api.ng.bluemix.net/v2/apps", 
    "qs": { 
     "q": "name:yourappname" 
    }, 
    "json": true, 
    "headers": { 
     "accept": "application/json", 
     "authorization": "bearer " + token 
    } 
    }).then(function (response) { 
    console.log(response.resources[0].metadata.guid); 
    }); 
}); 
+0

這是假設您正在使用Bluemix US South地區。如果使用其他區域(例如倫敦的https://login.eu-gb.bluemix.net),則必須調整登錄和api服務器。 –

0

檢查:

http://apidocs.cloudfoundry.org/272/apps/get_app_summary.html 

隨着HttpClient的API,你可以從任何語言獲取應用程序的名稱。

相關問題