从app name获取app guid - 通过代码

时间:2017-09-19 11:56:34

标签: node.js ibm-cloud cloudfoundry pivotal-cloud-foundry

我和在CF空间上运行的节点应用程序mainApp,在这个节点应用程序中我得到其他应用程序name(部署在同一空间中)和我我想从中获取应用程序 guid ,我该怎么做?

这就是我尝试的内容(我尝试在此空间中获取所有应用并从guid搜索特定应用,但我获得了http 401 - unauthorized

  
      
  1. 任何想法如何从app app guid部署到CF的应用程序(假设我有应用程序名称)

  2.   
  3. 有更好的方法来实现这一目标吗?

  4.   
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);
            });
        })

2 个答案:

答案 0 :(得分:1)

您必须首先获取访问令牌并将其传递到您在问题中的请求的标头中。 请参阅下面的示例,它将获取应用程序指南:

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);
  });
});

答案 1 :(得分:0)

检查一下:

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

使用httpclient API,您可以从任何语言获取应用程序名称。