在某些情况下,手工管理框架帐户还不够。有时,您需要更深入的集成才能无缝管理所有服务。那就是框架API进入的地方。
在这个由两部分组成的博客系列中,我们将向您介绍框架API,既是它的含义又是如何使用它。一些编程知识是有帮助的,但并不是严格要求。唯一的要求是了解您围绕计算机的方式。
出于此博客系列的目的,您将扮演Mark's Hardware的新兴软件工程师的角色,Mark's Hardware是一家大型虚构的零售连锁店,出售,硬件。想象一下,这是您的第一份工作,并且您不确定自己在做什么。值得庆幸的是,您有这个博客系列可以指导您!
马克(Mark)硬件的所有者马克(Mark)已任命您将Nutanix框架深入到公司的Intranet中,这是每个人都使用的。他希望您将框架作为公司Intranet上的应用程序添加。首先,他想从客户服务团队开始。客户服务团队仅使用一个应用程序,即一种可以帮助他们管理客户请求,退货和库存的工具。
即使只是一个应用程序,必须在将其推出到所有区域框架帐户之前在单独的帧帐户上进行大量测试。这就是Mark的硬件处理用户接受测试(UAT)的方式。但是,由于框架帐户太多,因此可能需要一段时间才能手动将批准的图像插入跨区域的其余帐户。
他问你两件事:
- 他希望您找到一种方法来减少QA团队赋予绿灯以部署应用程序的手动克隆帐户的工作。随着新商店的开放,他希望自动克隆到区域框架帐户的质量检查图像。
- 克隆图像后,他希望您单击一单击,而不是进入每个帐户并单击发布。
在开始为Mark的硬件开始这个项目之前,请确保您熟悉框架和框架帐户。如果您没有框架帐户,则可以按照说明开始免费试用这里。如果您不熟悉框架,请放心,有很多屏幕截图可以帮助您完成所有内容。因为您将构建Web应用程序,所以您还将学习一些有关如何做到这一点的信息。
在这个由两部分组成的博客系列的结尾处,您将构建一个完全有用的功能性的Web应用程序!
Nutanix框架API的概述
让我们从基础开始。“ API”代表什么?API是应用程序编程接口的首字母缩写词。在高水平上,API允许某人与在线服务互动。实际上,这就是API。使用这些互动,可以建立自定义体验以满足一组业务需求或您可能需要的其他任何东西。通常,开发人员将其用于自动化工作流程。
每个交互称为“ API调用”或“ API请求”。这是因为您正在调用服务,要求采取一些行动。API对请求的信息响应请求,或者告诉您该请求是否存在问题。那么,框架适合这张图片?将自己视为人类API是有帮助的。例如,当您打开框架帐户的沙箱时,您实际在做的是发送请求以打开沙箱。框架通过打开沙箱来做出响应。但是,还有一个API调用可以执行相同的操作。这次,它不是通过单击接口发送请求的人,而是一台计算机。
有许多不同类型的API调用。例如,还有一个API呼吁关闭沙箱。框架为您提供许多不同类型的API调用,使您可以自动化,并构建适合您需求的解决方案。
在高水平上,框架提供了两种不同类型的API:
- 管理API,用于管理您的框架帐户。示例操作包括打开和关闭沙箱或发布。
- 会话API,用于向用户提供框架会话。对于这一系列文章,使用此API的范围不超出范围。
设置您的API凭据
像任何在线服务一样,您首先需要对服务进行身份验证才能使用其API。但是为此,您首先需要创建一组凭据。您将在框架帐户的组织级别上创建这组凭据。
边注:对于那些有一定帧经验的人,是的,您还可以在客户级别甚至帐户级别上创建凭据。但是,创建凭证总是很好,以最大程度地减少安全漏洞的影响,以防您的凭据泄漏。最好让您的框架组织妥协而不是整个框架客户实体。至于为什么您不在帐户级别上执行此操作,您将使用读取和访问多个帐户的API调用。如果您将凭据与单个帐户联系在一起,则您的范围也将仅限于该帐户,并且您将看不到它的任何内容。您将必须为每个帐户创建和管理一个凭据,这可能很耗时。
让我们开始。打开用户您组织的部分。
切换API,然后单击节省在右上角:
一旦执行此操作,上面的另一个选项卡就会出现。单击此选项卡:
点击添加API按钮。给它任何您喜欢的名称,但请将角色设置为组织管理员,然后单击添加右下方的按钮。此角色可确保您可以访问组织下的所有帐户。
完成后,单击垂直三个点在您刚创建的API授权旁边。
然后,单击管理从下拉列表。给它任何您喜欢的名字。单击加号完成后:
您将获得带有API凭据的对话框。复制它们并将其存放在安全的地方。这些凭据可为您的整个组织提供一揽子访问权限,因此请勿将它们放在办公桌上的邮政便笺上。还值得注意的是,出于安全原因,这是显示这些凭据的唯一一次。一旦复制它们,您将无法获得框架再次向您展示相同的凭据。因此,如果您丢失了凭据,则需要再次单击加号符号,以相同的方式重新创建它们。
现在我们拥有API凭证,我们准备建立开发环境。
设置您的环境
您将使用Python编程语言使用Frame的API。一些操作系统(例如Windows)没有Python安装。按照说明进行操作这里用于在您自己的操作系统上下载和安装Python。
旁注:您将使用Python 3.如果您知道系统已经有Python,则安装了Python 2的可能性不足。本教程遵循Python 3标准和库,因此您需要将Python 2更新为Python 3。
打开终端或命令提示符,并在主目录中创建一个新文件夹。该文件夹将包含项目代码。创建它后,将工作目录更改为它。以下两个命令在MacOS,Linux和Windows上工作:
Mkdir框架 - 竞争
CD框架播放
进入项目文件夹后,让我们设置一个Python虚拟环境。这将有助于使项目中的所有软件包在项目中均匀包含。在此虚拟环境中安装任何内容将包含它到该项目文件夹,而无需触摸您的系统文件。实际上,即使是Python的解释器也可以实现此文件夹。
让我们创建我们的虚拟环境。
在苹果系统和Linux,以下命令应解决问题:
Python3 -M Venv Env
在Windows上:
PY -M Venv env
这将在您的项目文件夹中创建一个新的“ Env”文件夹。现在安装了虚拟环境,让我们继续激活它。
在苹果系统和Linux,这就是打开这个虚拟环境的方法:
来源env/bin/激活
在Windows上:
。\ env \ scripts \激活
您可以随时通过在终端中停用或关闭终端来离开虚拟环境。但是,让我们暂时不这样做。仍然有工作要做!让我们安装一些软件包:
PIP3安装请求烧瓶
请求包将帮助我们向Internet提出请求,而Blask软件包则用于创建Web应用程序。您还可以使用其他Web应用程序框架,但是烧瓶非常灵活,简单且易于使用。
创建测试页面
现在,让我们看看一切是否正常运行。在项目文件夹(frame-api-playground)的根中创建一个名为“ main.py”的文件,在其中添加以下代码:
从烧瓶进口烧瓶
app =烧瓶(__名称__)
@app.route('/')
def main():
返回“你好,世界!”
完成此操作后,您需要告诉我们的操作系统我们的应用程序所在。
在MacOS和Linux上,这是由以下命令完成的:
导出flask_app = main.py
在Windows上只有命令提示符:
设置flask_app = main.py
在带有PowerShell的Windows上:
$ env:flask_app =“ main.py”
完成此操作后,让我们测试以查看一切是否有效:
烧瓶运行
您应该看到一个包括本地URL的输出。默认情况下,此URL应为http://127.0.0.1:5000/。复制并在浏览器中打开。如果URL是其他的,那也很好,只需在浏览器中将其打开即可。
您应该看到“你好,世界!”作为页面上唯一的东西。如果您看到的,则意味着您已经正确配置了我们的环境。现在,让我们首次使用框架管理API!
首次使用框架管理API
Blask包含一个本地Web服务器,因此您现在可以创建一个简单的Web应用程序,该应用程序将使用Frame Admin API与Frame Platform进行交谈。
要使用API,您必须首先使用我们的凭据进行身份验证。这些是您在(希望)较早的安全位置中复制的值。让我们在您正在构建的Web应用程序中添加一个辅助功能,以验证我们。复制并粘贴以下代码,替换main.py的内容,然后我们按行浏览IT:
从烧瓶进口烧瓶,请求,render_template,重定向,url_for进口哈希布进口HMAC进口时间进口要求进口基础64client_id=“ <您的API客户端ID进入这里>”client_secret=b“ <您的API客户秘密去这里>”应用程序=烧瓶(__名称__)防守认证():#创建签名时间戳=int(时间。时间())to_sign=“%s%s”%(Timestamp,client_id)签名=HMAC。new(client_secret,to_sign。编码('utf-8'),hashlib。SHA256)。hexdigest()#准备HTTP请求标头标题={“ X-Frame-Clientid”:client_id,“ X框架Timestamp”:str(时间戳),“ X框架”: 签名 }返回标题@应用程序。路线('/')防守主要的():标题=认证()
- 在最重要的是,我们正在进口其他公用事业,以帮助我们创建适当的框架请求。
- 接下来的两行是我们的客户ID和客户端秘密。确保用我们复制的值替换这些值。
- 身份验证功能使用导入的实用程序创建适当的签名,我们的脚本将使用该签名将请求发送到框架。
现在,让我们专注于“主要”功能,然后进行第一个帧API调用。
由于您正在使用现有的框架帐户,因此您的组织下可能已经有一些帐户。如果没有,请立即创建一个。它应该只需几分钟。这是必要的,因为您将要进行的第一个API调用实际上是一个呼叫,以获取我们组织上的所有帐户。
我们将添加到我们的主要功能中。一旦有了一些帐户,请确保您的主要功能看起来像这样:
@应用程序。路线('/')防守主要的():标题=authenticate()r=要求。得到(“ https://api-gateway-prod.frame.nutanix.com/v1/accounts”,标题=标题)帐户=[]为了帐户在r。JSON():帐户。append(帐户['姓名')))返回“,”。加入(帐户)
使用请求库,您调用框架API端点“帐户”,该端点将帐户列表返回给我们。这用“ V1/帐户”表示。V1表示API调用的版本。您可以通过传递前面创建的标头对象来进行此API调用。获得帐户列表后,您将浏览列表,然后将它们返回到烧瓶中以显示在页面上。继续运行烧瓶,亲自查看结果:
烧瓶运行
恭喜!您刚刚进行了第一个帧API调用。在下一篇博客文章中,您将开始满足虚构的老板的请求,并找到一种方法,同时将图像从测试帐户中克隆到许多帐户。一旦您这样做,该系列的第三个也是最后一篇文章将涵盖如何启动框架用户会议。
此博客仅用于信息目的。有关Nutanix技术的更详细的技术规格和知识库文章,请创建一个我的nutanix帐户这将为您提供大量文档,以支持您的Nutanix发现。
©2021 Nutanix,Inc。保留所有权利。Nutanix,Nutanix徽标以及此处提到的所有Nutanix产品和服务名称是美国和其他国家的Nutanix,Inc。的注册商标或商标。本文提到的其他品牌名称仅用于识别目的,可能是其各自持有人的商标。这篇文章可能包含指向不属于Nutanix.com一部分的外部网站的链接。Nutanix不控制这些站点,并对任何外部站点的内容或准确性不承担所有责任。这篇文章可能包含明确和暗示的前瞻性陈述,这些陈述不是历史事实,而是基于我们当前的期望,估计和信念。此类陈述的准确性涉及风险和不确定性,并取决于未来的事件,包括可能无法控制的事件,实际结果可能与此类陈述所预期或暗示的事件差异。本文所包含的任何前瞻性陈述仅在本文之日起说,除非法律要求,否则我们没有义务更新或以其他方式修改任何此类前瞻性陈述,以反映后续事件或情况。