许多有趣的变数!如何使用 Postman 尝试 Nutanix 的 API

https://ithelp.ithome.com.tw/upload/images/20201015/20129565Cpxr3wptEM.png

那些具有使用API经验的人将听说过并熟悉无处不在的API测试和开发工具。但是,Nutanix Developer Portal上有很多内容专门针对那些刚开始使用Nutanix REST API的内容,包括设置您的第一个请求。今天的文章将介绍如何设置测试环境,以使该测试变得快速,容易。

Step 1 – 安装 Postman

这有点不费吹灰之力。如果尚未安装,请访问 https://getpostman.com ,下载最适合您的操作系统的版本(我使用Ubuntu Linux 19.04和Cinnamon Desktop Environment)并安装它。 不必担心现在就自定义安装或设置-我们将稍後进行一些介绍。

Step 2 – 基础设定

在这里,我将介绍安装Postman後所做的一些基本更改。 要获得这些设置,请单击“邮递员设置”图标(看起来像扳手),然後选择“设置”。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565Bhx2F7SCE7.png
Postman “Settings” option

  • 启用黑暗主题。 在任何环境下,即使在晚上,我通常也不喜欢深色模式。但是,以这种方式配置後,Postman是为数不多的应用程序之一。如果您希望Postman环境看起来像在偶尔的屏幕快照中那样,请单击“主题”选项卡,然後将主题从浅色切换为深色。
  • 禁用SSL认证验证。 在“常规”选项卡上,关闭标有“ SSL证书验证”的选项。请注意生产环境中此更改的安全隐患。为什麽?即使无效,所有SSL证书也会被自动接受。那些有使用Nutanix Prism或Nutanix REST API且未安装有效证书的经验的人会意识到,默认的自签名证书在真正可信的意义上是无效的。如果发现此证书无效,则禁用SSL证书验证可以避免Postman API请求失败。
  • 设置请求超时。 默认情况下,请求超时设置为0。这意味着如果未收到响应,则每个API请求将永远等待。对於我们来说,这确实不是一个很好的默认设置,因为我们希望有机会解决问题并在不正确的情况下重试。我将我的时间设置为30秒,即3000毫秒。
  • 禁用匿名使用情况数据。 这是可选的,但值得注意的是默认情况下已启用此功能。例如,在安全环境中,通常会阻止/禁止或控制所有外部网络活动。如果您的环境被认为是安全的,则不妨关闭此选项。
  • 启用两窗格视图。默认情况下,已设置Postman的用户界面,因此请求设置位於顶部,而响应则位於下方。这样做没什麽问题,但我希望答复显示在Postman UI右侧的窗格中。也许是因为默认的Google Chrome开发者工具位置?
  • 配置代理。 在企业环境中,您的PC /笔记本电脑/ VM可能位於某种代理服务器之後。如果需要在Postman中显式配置,可以在“代理”选项卡上进行配置。

完成所有操作後,以下是我的常规标签。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565W1l5dmZQ9n.png
Postman 设置 – 常规标签

Step 3 – 创建 Collection

因为我们都是某种类型的开发人员,所以我假设某种程度的组织和秩序对我们所有人而言都是第二自然。 考虑到这一点,创建一个Postman Collection来组织我们的事情是有意义的。

  • 在Postman UI的左侧,单击“新建收藏集”。 给集合起一个名字,例如Nutanix REST API Testing。
  • 现在忽略“授权”选项卡; 我们很快会再谈。
  • 转至“变量”标签,我们将开始确保工作流程尽可能高效。

Step 4.1 – 环境变数

Postman最简单但也是最好的功能之一就是使用变量的能力。 为何如此有用的一个很好的例子是Prism Central“ vs” Prism Element。 在测试各种Nutanix REST API请求时,通常会在Prism Central和Prism Element之间进行切换,对多个请求使用相同的凭据,并在多个位置使用相同的实体UUID。 每次手动输入这些值,然後在值更改时根本不需要更改每个实例。 作为附带说明,Postman还可以获取您保存的API请求,将其导出,并允许您与同事共享请求集合。 在这种情况下,您可能不想共享特定的环境设置,但仍然允许您的同事一次只输入一次信息。 解决所有这些问题的方法是使用Postman变量。

如您所料,第一件事就是我们没有定义变数。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565rcg3qOzuFi.png
未定义变数的 Postman Collection

在本文中,我将完全按照上文所述进行操作。 Prism Central和Prism Element IP地址都将经常使用,但是都将使用相同的凭据。 除了安全性最佳实践,在测试过程中这并不少见。 请注意,Postman绝对可以管理全局变量,即每个集合以及整个Postman工作区中可用的变量。 在此示例中,我仅定义它们可用於特定集合的位置。

  • 点击添加新变量链接,然後输入变量名称为pc_ip。 初始值将与共享集合的任何人共享,如果每个人都使用相同的变量值,则该初始值会很好。 当前值未在任何地方同步,仅在本地可用。 在为pc_ip设置初始值时,请注意“当前值”也将设置为相同的值。
  • 然後,针对该集合需要的其他变量重复此过程,如下表所示。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565kgI2uNdp96.png

Step 4.2 – 使用变数

设置请求时,使用上面定义的变量很简单。 需要引用变量的地方,语法如下:{{variable}}。 查看下面的请求,请注意,没有直接输入Prism Central IP地址,而是通过变量引用添加了该地址。 用户名和密码也做了同样的事情。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565sMfvwX8ndj.png
使用 Postman 变数代替手动输入 Prism Central IP 地址

https://ithelp.ithome.com.tw/upload/images/20201015/20129565caEWjmJSBv.png
使用 Postman 变数代替手动输入用户名和密码

Step 5 – Pre-request Scripts

下面的第5步留在这里,仅供请求前脚本参考。当前版本的 Postman 确实支持JSON请求有效载荷内的变量替换。

默认情况下,Postman似乎在POST请求的正文中不允许使用{{variable}}语法。我敢肯定那是不正确的,但是由於某种原因,发送带有这样的变量的请求,这样只会导致在该变量的位置不发送任何内容。但是,要使该工作正常进行,需要以预请求脚本的形式进行一些前功。

这是POST请求的简单JSON负载:

{
    "spec":{
        "name": "{{vm_name}}",
        "resources":{
        }
    },
    "api_version":"3.1.0",
    "metadata":{
        "kind":"vm"
    }
}

{{vm_name}} 变数不会像您期望的那样被替换。但是,转到“ Pre-req”选项卡并将其添加为请求前脚本可以解决此问题。

var vm_name = pm.variables.get("vm_name");

postman.setEnvironmentVariable("vm_name", vm_name)

Step 6 – 输入 Sample Collection

如果没有看到其中的一些内容,那麽这样的文章是不完整的。考虑到这一点,我提供了一个 Postman 集合,其中包含一些示例 Nutanix REST API 请求(v1,v2.0和v3)。让我们将其导入。

  • 前往NutanixDevs Github并下载Nutanix REST API Testing.postman_collection.json。
  • 切换到邮递员,然後在主界面的左上角附近,点击导入按钮。
  • 选择选择文件(或将文件拖放到UI中),然後浏览到您刚刚下载的JSON文件。

此阶段没有“确定”按钮,因此,如果一切顺利,您将在 Postman UI 的右下角看到类似这样的消息。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565NcCRMvHP6f.png
成功导入 Postman Sample Collection

并且,在集合的左侧,您会看到许多示例API请求。 对於此屏幕截图,我扩展了新集合中的每个分支。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565TTmaIU53jS.png
输入的 Postman Sample Collection

该集合具有许多为您预先配置的功能。

  • 授权已设置为使用集合范围变量
  • 已将所有请求设置为继承父项(即集合)的授权
  • 添加了变量列表,以演示如何在请求中使用它们(以下屏幕截图)

https://ithelp.ithome.com.tw/upload/images/20201015/20129565Gx3QfTSh5T.png
用於样本API请求的预定义集合范围变量

不过,您会从第4步中回想起,任何变量的“当前值”仅是局部变量,不会随集合一起导出。这就是为什麽只有几个变量具有当前设置的值的原因。再深入一点,您会看到确实设置了值的变量是可能在整个环境中使用的变量。例如,{{username}}可以在测试阶段共享,并且无论您身在何处,CentOS 8 ISO的URI都可能有效。 CentOS 8图片镜像的“免责声明”位於澳大利亚,因为这就是我的住所。您可能想要通过从CentOS网站获取适当/更接近的镜像URI来更改此设置。 ?

除此之外,您所需要做的就是用对您的环境有意义的值填充变量。

如果您决定查看stats请求示例,请确保查看标题为“通过API获取VM性能指标”的文章,因为它详细介绍了该过程的工作方式以及start_time_in_usecs之类的含义。

近一步的相关内容

如果您的工作站/ PC /笔记本电脑/ VM以前从未真正用作开发环境,那麽现在是查看我们的开发设置实验室的好时机! 它专门为那些相对较新的开发人员编写,涵盖了推荐的工具,设置和一些自定义位,这些将有助於使您的开发工作更加顺畅。

开发人员设置实验室可在Nutanix开发人员门户网站实验室页面上找到。

总结

尽管Postman确实拥有比上述功能更多的功能,但是配置集合和一些变量可以使您开始进行更高效的测试。 例如,仅通过使用变量,就可以自动更改所有出现的API端点IP地址,从而自动保存自己。 从更高的层次上讲,您还已经开始以合乎逻辑和吸引人的方式收集请求。

希望这篇简短的文章对您有所帮助。

感谢您的阅读,祝您有美好的一天!


<<:  [D30] : 一个Queue+Docker在Local的实作(4/4)

>>:  iris的依赖注入

Dungeon Mizarka 004

今天决定花些时间来加一些指标性的UI。所谓指标性的UI就是多数FPDC都会看的到的UI,简单来说就是...

Day 09 CSS <背景属性>

CSS背景属性 可以给页面元素添加背景样式 背景属性可设置背景颜色、背景图片、背景平舖、背景图片位置...

【Day21】给我一个节点,我可以把网页改头换面

「DOM API 定义了 JavaScript 存取、改变 HTML 架构、内容、样式的方法,甚至...

找LeetCode上简单的题目来撑过30天啦(DAY23)

题号:43 标题:Multiply Strings 难度:Medium Given two non-...

[day17]Vue实作-浏览列加入登入及注册钮

延续之前的浏览列的实作,这次要增加登入跟注册纽,其实我也还在想这个网站是否需要注册功能,毕竟是私人社...