当前位置: 首页 > 后端技术 > Node.js

通过Node.js中的RESTfulAPI管理您的云基础设施

时间:2023-04-04 01:27:02 Node.js

曾几何时,有人需要在互联网上发布自己的网站,他们不得不去购买昂贵的服务器,并希望性能足以扩大他们的用户群或他们不会满足负载使用的更昂贵的服务器。但这只是工作的20%,然后他们必须联系ISP,为服务器购买一个公共IP,并支付每月的网费和电费,然后确保服务器运行24×7。原来但是今天我们有托管服务,以确保一切都以合理的价格为我们处理。无论您是博主、企业家、经销商还是开发人员,您都需要安心。无论您是每天增加100万用户还是有一个粗略的补丁,您只需为使用的内容付费。例如,假设您已经制造了一个火箭去火星,并且您正在构建一个移动应用程序来销售门票。您今天发布您的应用程序,明天醒来发现有数百万人想要购买机票,但您的应用程序已损坏,因为您的VPS无法处理负载,或者您是拥有网站并手动订购其他平台服务器的VPS经销商.但是,如果您无需再次登录仪表板就可以自动执行此操作会怎样?在本文中,我们将了解如何使用NodeJS进行开发。在本文中,我将使用Veesp的API来做到这一点。有关此API的更多详细信息,请参阅以下链接中的官方文档https://secure.veesp.com/userapi让我们开始吧!安装npmrequests模块为了执行任何类型的HTTP请求,您需要一个HTTP客户端库。您可以自由使用自己的NodeJSHTTP客户端。对于本文,我们将使用npmrequests模块。首先让我们开始使用npm安装请求模块,npmi--saverequest然后创建一个名为app.js的文件并导入请求模块。constrequest=require('请求');订购VPSVeesp提供多种服务类别,包括VPS主机、域名、DNS主机等一些服务。另外,VPS主机分为几种类型,LinuxSSDVPS、LinuxHDDVPS、WindowsVPS和专用服务器。VeespAPI使用HTTPBasicUserAuthentication来验证用户。您应该使用请求标头发送您的用户名和密码,以便使用端点。在这个例子之后,我们将省略这个模块导入和用户名密码验证。但是你应该像我们之前提到的那样在每个请求中发送这些身份验证详细信息,所以这里是从API获取服务类列表的代码。constrequest=require('request');constusername='your@gmail.com';constpassword='yourpassword';consturl='https://secure.veesp.com/api/category';constauth=newBuffer.from(username+':'+password).toString('base64');constreq={url:url,method:'GET',headers:{'Authorization':'Basic'+auth,'Content-Type':'application/json'}};request(req,(err,res)=>{constbody=JSON.parse(res.body);console.log(body);});如果你想执行代码,你可以打开一个终端并运行nodeapp.js。您的控制台输出应如下所示,{categories:[{id:'18',name:'LinuxSSDVPS',description:'',slug:'vps'},{id:'19',name:'LinuxHDDVPS',description:'',还有请求和reonsesslug:'hdd-vps'},{id:'17',name:'WindowsVPS',description:'',slug:'windows-vps'},...所以我们列出类别和每个类别的相对ID。对于这个例子,我们将订购一个ID为18的新LinuxSSDVPS,我们可以在响应中看到它。然后我们可以使用这个类别id来获取该类别下的产品列表,如下所示。consturl='https://secure.veesp.com/api/category/18/product';constreq={url:url,method:'GET',headers:{'Authorization':'Basic'+auth,'Content-Type':'application/json'}};request(req,(err,res)=>{constbody=JSON.parse(res.body);console.log(body);});执行此代码后,您的控制台输出应如下所示,{products:[{id:'212',type:'11',name:'SSDSandbox',stock:false,paytype:'Regular',description:'CPU:1vCore
RAM:512MB
SSD:10GB
流量:100GB
带宽:200Mbps

    ',数量:-603,标签:[],periods:[Array]},{id:'236',type:'11',name:'SSD1',stock:false,paytype:'Regular',description:'CPU:1vCore
    RAM:1GB
    固态硬盘:25GB
    流量:无限制
    带宽:200Mbps
      ',数量:-436,标签:[],periods:[Array]},...现在我们可以订购产品将您的主机名作为参数“domain”传递给请求文本。您可以选择要订购的产品的ID,在本例中,我们将订购512MbRam、10GbSSD、100Gb流量和200Mbps网络接口。您可以在响应中看到与此产品关联的ID是212。consturl='https://secure.veesp.com/api/order/212';constoptions={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);});如果您没有收到来自服务器的任何错误,您现在应该已经启动并运行了您的VPS。列出当前服务您可能想要获取当前VPS的列表以分析当前使用情况并在需要时控制停止或启动VPS。让我们通过调用/serviceAPI来获取服务列表,如下所示consturl='https://secure.veesp.com/api/service';constreq={url:url,method:'GET',headers:{'Authorization':'Basic'+auth,'Content-Type':'application/json'}};request(req,(err,res)=>{constbody=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:'LinuxSSDVPS',category_url:'vps',name:'SSDSandbox'},{id:'29611',taldomain:'xdhost',to:'4.000',状态:'Active',billingcycle:'Monthly',next_due:'2019-07-21',category:'LinuxSSDVPS',category_url:'vps',name:'SSD}Sand}'自从我们创建了一个LinuxSSDVPS,我们将获得它的列表以及我们正在使用的所有其他服务。如果您只需要VPS服务器或某个类别,您可以根据需要按category_url或类别进行过滤。例如,如果您只想选择LinuxSSDVPS类别request(req,(err,res)=>{constbody=JSON.parse(res.body);constservices=body.services;constlinuxSSDVpsList=services.filter((item)=>{if(item.category==='LinuxSSDVPS'){returntrue;}});console.log(linuxSSDVpsList);});停止和启动VPS现在我们有一个服务列表和它们的ID。最后,现在我们可以获得与该服务关联的VM列表,如下所示。您应该使用以下URL传递您的服务ID。注意上面请求29618的服务ID是用来获取VM列表的。consturl='https://secure.veesp.com/api/service/29618/vms';constreq={url:url,method:'GET',headers:{'Authorization':'Basic'+auth,'Content-Type':'application/json'}};request(req,(err,res)=>{constbody=JSON.parse(res.body);console.log(body);});你应该从服务器获得这样的响应,其中包含VMID和信息(包括密码),{"vms":{"17228":{"password":"afakepassword","template":"linux-centos-6-i386-min-gen2-v1","template_label":"CentOS632bit\t","disk":10,"memory":512,"burstmem":-512,"bandwidth":100,"pae":0,"pxe":0,"id":"17228","state":"online","ipv6subnets":["2a00:1345:37:13a::/64"],"usage":{“磁盘”:{“总计”:10,“已用”:0,“免费”:10,“百分比”:“0”},“内存”:{“总计”:0,“重新”:0“使用0,"percent":"0"},"带宽th":{"total":100,"used":0,"free":100,"percent":"0"}},"label":"xd002",5"3.4"ip":[4.,"2a00:1345:37:13a::a246"],"cpus":"1"}}}如您所见,您已经在响应中分配了公共IP和密码来验证VPS现在,您可以这样stage自动部署应用程序和扩展逻辑,或者如果您是经销商,则将这些凭据返回给您的客户。现在您可以如下所示在VPS上执行停止和启动操作,以停止服务器,consturl='https://secure.veesp.com/api/service/29618/vms/17228/stop';constoptions={method:'POST',url:url,headers:{'Authorization':'Basic'+auth,'Content-Type':'application/json'}};request(选项,函数(err,res,正文){console.log(正文);});要启动服务器,consturl='https://secure.veesp.com/api/service/29618/vms/17228/start';constoptions={method:'POST',url:url,headers:{'Authorization':'Basic'+auth,'Content-Type':'application/json'}};request(options,function(err,res,正文){console.log(正文);});除此之外,您还可以使用此API重建VPS、重新启动VPS、更改VPS的启动顺序。所以这是如何使用HTTPAPI使用自动化和应用程序扩展的基础知识。希望您会发现这对于随着客户群的增长而自动化和扩展您的业务很有用,甚至无需再次登录仪表板。感谢您花几分钟时间阅读本文!