IBM - 使用 API 和 Node.js 创建 VPC
IBM - Creating a VPC using API with Node.js
我有一个 Node.js 应用程序,目前允许用户提供 Digital Ocean Droplet。但是,我现在正尝试迁移到 IBM Cloud,而不是想供应虚拟服务器。
我遇到的问题是我没有使用 API 的经验。 Digital Ocean 有自己的 NPM 包,作为 Digital Ocean API 位的包装器,我找不到 IBM Cloud 的等效项。我一直在查看 VPC API documentation,我已经完成了使用终端创建虚拟服务器的整个过程,并且我已经成功配置了虚拟服务器。
现在,我正在尝试让这些 cURL 请求在 Node.js 中工作。我从简单的 GET images API 开始尝试打印可用的图像。命令如下所示:
curl -X GET "https://eu-gb.iaas.cloud.ibm.com/v1/images?version=2019-10-08&generation=1" \
-H "Authorization: *IAM TOKEN HERE*"
我已经阅读了 Node HTTP documentation,到目前为止,我已经将此命令转换为如下所示:
const http = require('http')
const options = {
hostname: 'https://eu-gb.iaas.cloud.ibm.com',
port: 80,
path: '/v1/images?version=2019-10-08&generation=1',
method: 'GET',
headers: {
'Authorization': '*IAM TOKEN HERE*'
}
};
const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
req.end();
但是,当我运行 JS 文件时,出现以下错误:
problem with request: getaddrinfo ENOTFOUND https://eu-gb.iaas.cloud.ibm.com https://eu-gb.iaas.cloud.ibm.com:80
有人可以向我解释错误、哪里出错了,以及如何解决这个问题吗?
非常感谢,
G
尝试如下:
const https = require('https');
const options = {
hostname: 'eu-gb.iaas.cloud.ibm.com',
port: 443,
path: '/v1/images?version=2019-10-08&generation=1',
method: 'GET',
headers: {
'Authorization': 'Bearer <IAM TOKEN HERE>'
}
};
const req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.on('error', (e) => {
console.error(e);
});
req.end();
协议http://
不应该包含在主机字段中,另外,建议使用https。
我有一个 Node.js 应用程序,目前允许用户提供 Digital Ocean Droplet。但是,我现在正尝试迁移到 IBM Cloud,而不是想供应虚拟服务器。
我遇到的问题是我没有使用 API 的经验。 Digital Ocean 有自己的 NPM 包,作为 Digital Ocean API 位的包装器,我找不到 IBM Cloud 的等效项。我一直在查看 VPC API documentation,我已经完成了使用终端创建虚拟服务器的整个过程,并且我已经成功配置了虚拟服务器。
现在,我正在尝试让这些 cURL 请求在 Node.js 中工作。我从简单的 GET images API 开始尝试打印可用的图像。命令如下所示:
curl -X GET "https://eu-gb.iaas.cloud.ibm.com/v1/images?version=2019-10-08&generation=1" \
-H "Authorization: *IAM TOKEN HERE*"
我已经阅读了 Node HTTP documentation,到目前为止,我已经将此命令转换为如下所示:
const http = require('http')
const options = {
hostname: 'https://eu-gb.iaas.cloud.ibm.com',
port: 80,
path: '/v1/images?version=2019-10-08&generation=1',
method: 'GET',
headers: {
'Authorization': '*IAM TOKEN HERE*'
}
};
const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
req.end();
但是,当我运行 JS 文件时,出现以下错误:
problem with request: getaddrinfo ENOTFOUND https://eu-gb.iaas.cloud.ibm.com https://eu-gb.iaas.cloud.ibm.com:80
有人可以向我解释错误、哪里出错了,以及如何解决这个问题吗?
非常感谢,
G
尝试如下:
const https = require('https');
const options = {
hostname: 'eu-gb.iaas.cloud.ibm.com',
port: 443,
path: '/v1/images?version=2019-10-08&generation=1',
method: 'GET',
headers: {
'Authorization': 'Bearer <IAM TOKEN HERE>'
}
};
const req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.on('error', (e) => {
console.error(e);
});
req.end();
协议http://
不应该包含在主机字段中,另外,建议使用https。