通過 Node.js 中的 RESTful API 管理您的雲基礎架構
曾幾何時有人需要在網際網路上釋出他們自己的網站,他們不得不去購買昂貴的伺服器,希望效能足以增加使用者群或購買他們不會滿負荷使用的更昂貴的伺服器。但這只是工作的20%,然後他們不得不聯絡ISP併為伺服器購買公共IP並支付每月的網際網路賬單和電費,然後確保伺服器執行24×7。原文
但今天我們有一個託管服務,以確保以合理的價格為我們處理每一件事。無論您是博主,企業家,經銷商還是開發人員,您都必須高枕無憂。無論您是每天增加100萬使用者還是擁有粗糙的補丁,您只需要為所使用的內容付費。
例如,假設您已經製作了火箭去火星,並且您正在構建一個移動應用程式來銷售門票。您今天釋出了應用程式,明天醒來時有數百萬人想要購買機票,但您的應用程式已損壞,因為您的VPS無法處理負載,或者您是擁有網站並手動訂購伺服器的VPS經銷商其他平臺。 但是,如果您可以自動執行此操作而無需再次登入儀錶板,該怎麼辦呢? 在本文中,我們將看到如何使用NodeJS開發它。 對於本文,我將使用Veesp的API來做到這一點。
有關此API的更多詳細資訊,請參閱以下連結secure.veesp.com/userapi的官方檔案
讓我們開始吧!
安裝npm請求模組
為了執行任何型別的HTTP請求,您需要一個HTTP客戶端庫。 您可以自由使用自己的NodeJS HTTP客戶端。 對於本文,我們將使用npm請求模組。
首先讓我們開始使用npm安裝請求模組,
npm i --save request
複製程式碼
然後建立一個名為app.js的檔案並匯入請求模組。
const request = require('request');
複製程式碼
訂購VPS
Veesp提供各種服務類別,包括VPS主機,域名,DNS託管和其他一些服務。 此外,VPS主機分為幾種型別,Linux SSD VPS,Linux HDD VPS,Windows VPS和專用伺服器。
Veesp API使用HTTP基本使用者身份驗證來驗證使用者。 您應該使用請求標頭髮送您的使用者名稱和密碼,以便使用端點。
在此示例之後,我們將省略此模組匯入和使用者名稱密碼驗證。 但是您應該像我們之前提到的那樣在每個請求中傳送這些身份驗證詳
所以這裡是從API獲取服務類別列表的程式碼。
const request = require('request');
const username = '[email protected]';
const password = 'yourpassword';
const url = 'https://secure.veesp.com/api/category';
const auth = new Buffer.from(username + ':' + password).toString('base64');
const req = {
url: url, method: 'GET', headers: {
'Authorization': 'Basic ' + auth, 'Content-Type': 'application/json'
}
};
request(req,(err,res) => {
const body = JSON.parse(res.body);
console.log(body);
});
複製程式碼
如果要執行程式碼,可以開啟終端並執行node app.js
。 你的控制檯輸出應該是這樣的,
{ categories:
[ { id: '18',name: 'Linux SSD VPS',description: '',slug: 'vps' }, { id: '19', name: 'Linux HDD VPS', description: '',There is also requests and reonses
slug: 'hdd-vps' }, { id: '17', name: 'Windows VPS', slug: 'windows-vps' }, …
複製程式碼
因此,我們列出了每個類別的類別和相關ID。 對於此示例,我們將訂購一個新的Linux SSD VPS,其中ID為18,我們可以在響應中看到。
然後我們可以使用此類別ID獲取此類別下的產品列表,如下所示。
const url = 'https://secure.veesp.com/api/category/18/product';
const req = {
url: url,method: 'GET',headers: {
'Authorization': 'Basic ' + auth,'Content-Type': 'application/json'
}
};
request(req,res) => {
const body = JSON.parse(res.body);
console.log(body);
});
複製程式碼
執行此程式碼後,您的控制檯輸出應如下所示,
{ products:
[ { id: '212',type: '11',name: 'SSD Sandbox',stock: false,paytype: 'Regular',description:
'CPU:1 vCore<br>RAM:512MB<br>SSD:10GB<br>Traffic:100GB<br>Bandwidth:200Mbps<br><ul></ul>',qty: -603,tags: [],periods: [Array] },{ id: '236',name: 'SSD 1',description:
'CPU:1 vCore<br>RAM:1GB<br>SSD:25GB<br>Traffic:Unlimited<br>Bandwidth:200Mbps<br><ul></ul>',qty: -436,…
複製程式碼
現在我們可以訂購產品了。 將您的主機名作為引數'domain'傳遞給請求正文。 您可以選擇要訂購的產品的ID,對於此示例,我們將訂購512 Mb Ram,10 Gb SSD,100 Gb流量和200 Mbps網路介面。 您可以在回覆中看到與該產品相關的ID為212。
const url = 'https://secure.veesp.com/api/order/212';
const options = {
method: 'POST', url: url, 'Content-Type': 'application/json'
}, body: JSON.stringify({
domain: 'myhostname'
})
};
request(options,function (err,res,body) {
console.log(body);
});
複製程式碼
如果您沒有從伺服器收到任何錯誤,您現在應該啟動並執行VPS。
列出當前服務
您可能需要獲取當前VPS列表以分析當前使用情況,並在需要時控制停止或啟動VPS。
讓我們通過呼叫/service API獲取服務列表,如下所示
const url = 'https://secure.veesp.com/api/service';
const req = {
url: url, method: 'GET', headers: {
'Authorization': 'Basic ' + auth, 'Content-Type': 'application/json'
}
};
request(req,res) => {
const body = JSON.parse(res.body);
console.log(body);
});
複製程式碼
執行此程式碼,您應該得到這樣的響應,
{ services:
[ { id: '29618', domain: 'xd002', total: '4.000', status: 'Active', billingcycle: 'Monthly', next_due: '2019-07-22', category: 'Linux SSD VPS', category_url: 'vps', name: 'SSD Sandbox' }, { id: '29611', domain: 'xdhost', next_due: '2019-07-21', name: 'SSD Sandbox' } ] }
複製程式碼
因為我們已經建立了一個Linux SSD VPS,所以我們將獲得它以及我們正在使用的所有其他服務的列表。 如果您只需要VPS伺服器或某個類別,則可以根據需要按category_url或類別進行過濾。
例如,如果您只想選擇Linux SSD VPS類別
request(req,res) => {
const body = JSON.parse(res.body);
const services = body.services;
const linuxSSDVpsList = services.filter((item) => {
if (item.category === 'Linux SSD VPS') {
return true;
}
});
console.log(linuxSSDVpsList);
});
複製程式碼
Stop並啟動VPS
現在我們有一個服務列表及其ID。 最後,現在我們可以獲得與服務相關的VM列表,如下所示。 您應該使用以下URL傳遞您的服務ID。 請注意,上述請求29618的服務ID用於獲取VM列表。
const url = 'https://secure.veesp.com/api/service/29618/vms';
const req = {
url: url,res) => {
const body = JSON.parse(res.body);
console.log(body);
});
複製程式碼
您應該從具有VM ID和資訊(包括密碼)的伺服器獲得這樣的響應,
{
"vms": {
"17228": {
"password": "afakepassword", "template": "linux-centos-6-i386-min-gen2-v1", "template_label": "CentOS 6 32 bit\t", "disk": 10, "memory": 512, "burstmem": -512, "bandwidth": 100, "pae": 0, "pxe": 0, "id": "17228", "state": "online", "ipv6subnets": [
"2a00:1345:37:13a::/64"
], "usage": {
"disk": {
"total": 10, "used": 0, "free": 10, "percent": "0"
}, "memory": {
"total": 0, "free": 0, "bandwidth": {
"total": 100, "free": 100, "percent": "0"
}
}, "label": "xd002", "ip": [
"34.34.56.56", " 2a00:1345:37:13a::a246"
], "cpus": "1"
}
}
}
複製程式碼
如您所見,您具有分配的公共IP和密碼,以在響應中驗證VPS。 現在,您可以在此階段自動部署應用程式和擴充套件邏輯,或者如果您是經銷商,則將這些憑據退還給您的客戶。
現在您可以在VPS上執行停止和啟動操作,如下所示,
要停止伺服器,
const url = 'https://secure.veesp.com/api/service/29618/vms/17228/stop';
const options = {
method: 'POST', url: url, 'Content-Type': 'application/json'
}
};
request(options,body) {
console.log(body);
});
複製程式碼
要啟動伺服器,
const url = 'https://secure.veesp.com/api/service/29618/vms/17228/start';
const options = {
method: 'POST',body) {
console.log(body);
});
複製程式碼
除此之外,您可以重建VPS,重新啟動VPS,使用此API更改VPS的啟動順序。
因此,這是使用HTTP API如何使用自動化和應用程式擴充套件的基礎知識。 希望您會發現這對於隨著客戶群的增長自動化和擴充套件業務非常有用,甚至無需再次登入儀錶板。
感謝您花幾分鐘時間閱讀這篇文章!