javascript – CF连接到云控制器

我使用以下lib连接到云控制器

https://github.com/prosociallearnEU/cf-nodejs-client

const endpoint = "https://api.mycompany.com/";
const username = "myuser";
const password = "mypass";

const CloudController = new (require("cf-client")).CloudController(endpoint);
const UsersUAA = new (require("cf-client")).UsersUAA;
const Apps = new (require("cf-client")).Apps(endpoint);

CloudController.getInfo().then((result) => {
    UsersUAA.setEndPoint(result.authorization_endpoint);
    return UsersUAA.login(username,password);
}).then((result) => {
    Apps.setToken(result);
    return Apps.getApps();
}).then((result) => {
    console.log(result);
}).catch((reason) => {
    console.error("Error: " + reason);
});

>我尝试针对我们的API运行它并且它无法工作,我在控制台中没有收到任何错误消息,它可以是什么?
>这里处理空间/组织的位置是什么?因为当我从cli连接时,它会问我要连接哪个空间/组织…

我能够通过CLI登录,只是从代码我不能,任何想法在这里缺少什么?

我运行它时的问题我没有得到任何错误,可以帮助理解什么是根本原因

解决方法

我克隆了原来的git存储库并修改了一些支持代理的方法.请注意,我修改了一些方法以使示例代码正常工作,但需要完整的包重构.

基本上你要做的是在调用请求方法之前添加一个代理参数(这是在整个包中完成的,因此需要进行一些修改),例如,这是针对Organization.js文件中的一个方法

getSummary (guid) {

        const url = `${this.API_URL}/v2/organizations/${guid}/summary`;
        const proxy = `${this.API_PROXY}`;
        const options = {
            method: "GET",url: url,proxy: proxy,headers: {
                Authorization: `${this.UAA_TOKEN.token_type} ${this.UAA_TOKEN.access_token}`
            }
        };

        return this.REST.request(options,this.HttpStatus.OK,true);
    }

您可以在下面的git存储库中找到我的更改:

https://github.com/adasilva70/cf-nodejs-client.git

我还在下面创建了一个新示例.此示例列出了用户的所有组织,获取了返回的第一个组织并列出了其空间.您可以修改代码以提供与cf login提供的类似功能(允许您选择组织,然后选择空格).

const endpoint = "https://api.mycompany.com/";
const username = "youruser";
const password = "yourpassword";
const proxy = "http://proxy.mycompany.com:8080";

const CloudController = new (require("cf-nodejs-client")).CloudController(endpoint,proxy);
const UsersUAA = new (require("cf-nodejs-client")).UsersUAA;
const Apps = new (require("cf-nodejs-client")).Apps(endpoint,proxy);
const Orgs = new (require("cf-nodejs-client")).Organizations(endpoint,proxy);

CloudController.getInfo().then((result) => {
    console.log(result);
    UsersUAA.setEndPoint(result.authorization_endpoint,proxy);
    return UsersUAA.login(username,password);
}).then((result) => {
    //Apps.setToken(result);
    //return Apps.getApps();
    Orgs.setToken(result);
    return Orgs.getorganizations();
}).then((result) => {
    console.log(result);
    org_guid = result.resources[1].Metadata.guid;
    return Orgs.getSummary(org_guid);
}).then((result) => {
    console.log(result);
}).catch((reason) => {
    console.error("Error: " + reason);
});

我做了一些小测试以确保样品正常工作,所以要小心使用.此外,更改仅适用于现在需要代理的情况.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...