日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

通過 Node.js 中的 RESTful API 管理您的云基礎(chǔ)架構(gòu)

 昵稱54266459 2019-09-02

曾幾何時(shí)有人需要在互聯(lián)網(wǎng)上發(fā)布他們自己的網(wǎng)站,他們不得不去購(gòu)買昂貴的服務(wù)器,希望性能足以增加用戶群或購(gòu)買他們不會(huì)滿負(fù)荷使用的更昂貴的服務(wù)器。但這只是工作的20%,然后他們不得不聯(lián)系ISP并為服務(wù)器購(gòu)買公共IP并支付每月的互聯(lián)網(wǎng)賬單和電費(fèi),然后確保服務(wù)器運(yùn)行24×7。原文

但今天我們有一個(gè)托管服務(wù),以確保以合理的價(jià)格為我們處理每一件事。無(wú)論您是博主,企業(yè)家,經(jīng)銷商還是開發(fā)人員,您都必須高枕無(wú)憂。無(wú)論您是每天增加100萬(wàn)用戶還是擁有粗糙的補(bǔ)丁,您只需要為所使用的內(nèi)容付費(fèi)。

例如,假設(shè)您已經(jīng)制作了火箭去火星,并且您正在構(gòu)建一個(gè)移動(dòng)應(yīng)用程序來(lái)銷售門票。您今天發(fā)布了應(yīng)用程序,明天醒來(lái)時(shí)有數(shù)百萬(wàn)人想要購(gòu)買機(jī)票,但您的應(yīng)用程序已損壞,因?yàn)槟腣PS無(wú)法處理負(fù)載,或者您是擁有網(wǎng)站并手動(dòng)訂購(gòu)服務(wù)器的VPS經(jīng)銷商其他平臺(tái)。
但是,如果您可以自動(dòng)執(zhí)行此操作而無(wú)需再次登錄儀表板,該怎么辦呢? 在本文中,我們將看到如何使用NodeJS開發(fā)它。 對(duì)于本文,我將使用Veesp的API來(lái)做到這一點(diǎn)。

有關(guān)此API的更多詳細(xì)信息,請(qǐng)參閱以下鏈接https://secure./userapi的官方文檔

VeespVeesp

讓我們開始吧!

安裝npm請(qǐng)求模塊

為了執(zhí)行任何類型的HTTP請(qǐng)求,您需要一個(gè)HTTP客戶端庫(kù)。 您可以自由使用自己的NodeJS HTTP客戶端。 對(duì)于本文,我們將使用npm請(qǐng)求模塊。

首先讓我們開始使用npm安裝請(qǐng)求模塊,

npm i --save request

然后創(chuàng)建一個(gè)名為app.js的文件并導(dǎo)入請(qǐng)求模塊。

const request = require('request');

訂購(gòu)VPS

Veesp提供各種服務(wù)類別,包括VPS主機(jī),域名,DNS托管和其他一些服務(wù)。 此外,VPS主機(jī)分為幾種類型,Linux SSD VPS,Linux HDD VPS,Windows VPS和專用服務(wù)器。

Veesp.comVeesp.com

Veesp API使用HTTP基本用戶身份驗(yàn)證來(lái)驗(yàn)證用戶。 您應(yīng)該使用請(qǐng)求標(biāo)頭發(fā)送您的用戶名和密碼,以便使用端點(diǎn)。

在此示例之后,我們將省略此模塊導(dǎo)入和用戶名密碼驗(yàn)證。 但是您應(yīng)該像我們之前提到的那樣在每個(gè)請(qǐng)求中發(fā)送這些身份驗(yàn)證詳

所以這里是從API獲取服務(wù)類別列表的代碼。

const request = require('request');

const username = 'your@gmail.com';
const password = 'yourpassword';

const url = 'https://secure./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);
});

如果要執(zhí)行代碼,可以打開終端并運(yùn)行node app.js。 你的控制臺(tái)輸出應(yīng)該是這樣的,

{ 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',
       description: '',
       slug: 'windows-vps' },
     …

因此,我們列出了每個(gè)類別的類別和相關(guān)ID。 對(duì)于此示例,我們將訂購(gòu)一個(gè)新的Linux SSD VPS,其中ID為18,我們可以在響應(yīng)中看到。

然后我們可以使用此類別ID獲取此類別下的產(chǎn)品列表,如下所示。

const url = 'https://secure./api/category/18/product';

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

執(zhí)行此代碼后,您的控制臺(tái)輸出應(yīng)如下所示,

{ 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',
       type: '11',
       name: 'SSD 1',
       stock: false,
       paytype: 'Regular',
       description:
        'CPU:1 vCore<br>RAM:1GB<br>SSD:25GB<br>Traffic:Unlimited<br>Bandwidth:200Mbps<br><ul></ul>', qty: -436,
       tags: [],
       periods: [Array] },

現(xiàn)在我們可以訂購(gòu)產(chǎn)品了。 將您的主機(jī)名作為參數(shù)'domain'傳遞給請(qǐng)求正文。 您可以選擇要訂購(gòu)的產(chǎn)品的ID,對(duì)于此示例,我們將訂購(gòu)512 Mb Ram,10 Gb SSD,100 Gb流量和200 Mbps網(wǎng)絡(luò)接口。 您可以在回復(fù)中看到與該產(chǎn)品相關(guān)的ID為212。

const url = 'https://secure./api/order/212';

const options = {
    method: 'POST',
    url: url,
    headers: {
        'Authorization': 'Basic ' + auth,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        domain: 'myhostname'
    })
};

request(options, function (err, res, body) {
    console.log(body);
});

如果您沒有從服務(wù)器收到任何錯(cuò)誤,您現(xiàn)在應(yīng)該啟動(dòng)并運(yùn)行VPS。

列出當(dāng)前服務(wù)

您可能需要獲取當(dāng)前VPS列表以分析當(dāng)前使用情況,并在需要時(shí)控制停止或啟動(dòng)VPS。

讓我們通過調(diào)用/service API獲取服務(wù)列表,如下所示

const url = 'https://secure./api/service';

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

執(zhí)行此代碼,您應(yīng)該得到這樣的響應(yīng),

{ 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',
       total: '4.000',
       status: 'Active',
       billingcycle: 'Monthly',
       next_due: '2019-07-21',
       category: 'Linux SSD VPS',
       category_url: 'vps',
       name: 'SSD Sandbox' } ] }

因?yàn)槲覀円呀?jīng)創(chuàng)建了一個(gè)Linux SSD VPS,所以我們將獲得它以及我們正在使用的所有其他服務(wù)的列表。 如果您只需要VPS服務(wù)器或某個(gè)類別,則可以根據(jù)需要按category_url或類別進(jìn)行過濾。

例如,如果您只想選擇Linux SSD VPS類別

request(req, (err, 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并啟動(dòng)VPS

現(xiàn)在我們有一個(gè)服務(wù)列表及其ID。 最后,現(xiàn)在我們可以獲得與服務(wù)相關(guān)的VM列表,如下所示。 您應(yīng)該使用以下URL傳遞您的服務(wù)ID。 請(qǐng)注意,上述請(qǐng)求29618的服務(wù)ID用于獲取VM列表。

const url = 'https://secure./api/service/29618/vms';

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

您應(yīng)該從具有VM ID和信息(包括密碼)的服務(wù)器獲得這樣的響應(yīng),

{

  "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,

          "used": 0,

          "free": 0,

          "percent": "0"

        },

        "bandwidth": {

          "total": 100,

          "used": 0,

          "free": 100,

          "percent": "0"

        }

      },

      "label": "xd002",

      "ip": [

        "34.34.56.56",

        " 2a00:1345:37:13a::a246"

      ],

      "cpus": "1"

    }

  }

}

如您所見,您具有分配的公共IP和密碼,以在響應(yīng)中驗(yàn)證VPS。 現(xiàn)在,您可以在此階段自動(dòng)部署應(yīng)用程序和擴(kuò)展邏輯,或者如果您是經(jīng)銷商,則將這些憑據(jù)退還給您的客戶。

現(xiàn)在您可以在VPS上執(zhí)行停止和啟動(dòng)操作,如下所示,

要停止服務(wù)器,

const url = 'https://secure./api/service/29618/vms/17228/stop';

const options = {
   method: 'POST',
   url: url,
   headers: {
       'Authorization': 'Basic ' + auth,
       'Content-Type': 'application/json'
   }
};

request(options, function (err, res, body) {
   console.log(body);
});

要啟動(dòng)服務(wù)器,

const url = 'https://secure./api/service/29618/vms/17228/start';

const options = {
   method: 'POST',
   url: url,
   headers: {
       'Authorization': 'Basic ' + auth,
       'Content-Type': 'application/json'
   }
};

request(options, function (err, res, body) {
   console.log(body);
});

除此之外,您可以重建VPS,重新啟動(dòng)VPS,使用此API更改VPS的啟動(dòng)順序。

因此,這是使用HTTP API如何使用自動(dòng)化和應(yīng)用程序擴(kuò)展的基礎(chǔ)知識(shí)。 希望您會(huì)發(fā)現(xiàn)這對(duì)于隨著客戶群的增長(zhǎng)自動(dòng)化和擴(kuò)展業(yè)務(wù)非常有用,甚至無(wú)需再次登錄儀表板。

感謝您花幾分鐘時(shí)間閱讀這篇文章!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多