接口测试工具Postman(二)请求响应、调试、授权、Cookies和证书

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuyunier/article/details/87785791

目录

 

一、Requests请求

二、Responses响应

三、API请求答疑解惑

四、调试和日志

四、授权

五、Cookies

六、证书


一、Requests请求

1、创建请求

在Postman中可以通过以下三种方式创建和保存请求:

  • 通过请求构造器创建请求;
  • 通过New按钮创建请求;
  • 通过启动页面创建请求。

2、URL

在URL输入字段中输入请求URL时,以前使用的URL将显示自动完成下拉列表。

单击Params按钮打开URL参数的数据编辑器。 添加键值对时,Postman会将上面查询字符串中的所有内容组合在一起。如果网址已经有参数,Postman会自动将网址分成键-值对两部分。

注意:在URL栏或数据编辑器中输入的参数不会自动进行URL编码。 右键单击一段选定文本,然后选择“EncodeURIComponent”以手动编码参数值。
注意:如果未指定协议,Postman会自动将http://添加到URL的开头。

3、Headers

单击“Headers”选项卡可显示标题键值编辑器,可以将任何字符串设置为标题名称。 当在字段中键入时,自动完成下拉列表会提供常见HTTP标头的建议, “Content-Type”标题的值也可在自动完成下拉列表中使用。

4、Cookies

可以使用Cookie管理器编辑与每个域关联的Cookies,从而管理本机应用中的Cookies。 要打开模式,单击“Send”按钮下的Cookies链接。

5、Header presets(预设请求头)

可以将常用标题一起保存在请求头预设中。在请求头标签下,可以通过从右侧的预设下拉列表中选择“管理预设”来为给请求添加请求头预设。

6、请求方法

使用控制下拉列表更改请求方法。 请求体编辑器区域将根据方法是否可以添加主体内容而发生变化。

7、请求体

在构建请求时,我们经常使用请求体编辑器。Postman可以发送几乎任何类型的HTTP请求。请求体编辑器分为4个区域,根据请求体类型有不同的输入UI。

当通过HTTP协议发送请求时,服务器可能需要一个Content-Type标头。Content-Type头让服务器正确解析请求体。对于表单数据和urlencoded请求体类型,Postman自动附加正确的Content-Type标题,因此我们不必手动设置它。当选择请求体内容格式类型时,会将请求头设置为RAW。如果我们手动使用Content-Type标头,则该值优先于Postman设置的值。Postman没有为二进制体类型设置任何请求头类型。

(1)form-data

multipart/form-data是Web表单用于传输数据的默认编码。这模拟了在网站上填写表单并提交它。表单数据编辑器允许我们为数据设置键-值对。我们也可以为文件设置一个键,文件本身作为值进行设置。

目前尚不支持上传多个文件,每个文件都有自己的Content-Type。

(2)x-www-form-urlencoded

该编码与URL参数中使用的编码相同。我们只需输入键-值对,Postman会正确编码键和值。请注意,我们无法通过此编码模式上传文件。表单数据和urlencoded之间可能存在一些差异,因此请务必首先检查API的编码实现,确定是否可以使用这种方式发送请求。

(3)Raw

RAW请求可以包含任何内容。除了替换环境变量之外,Postman不触碰在编辑器中输入的字符串。无论你在编辑区输入什么内容,都会随请求一起发送到服务器。编辑器允许我们设置格式类型以及使用原始主体发送的正确请求头。我们也可以手动设置Content-Type标题,这将覆盖Postman定义的设置。

提示:在编辑器中选择文本并按CMD / CTRL + B可以自动美化XML / JSON内容。

(4)binary

二进制数据可让我们发送Postman中无法输入的内容,例如图像,音频或视频文件。当然了,我们也可以发送文本文件。正如前面在表单数据部分中提到的,如果通过历史记录或集合加载请求,则必须重新附加文件。

二、Responses响应

Postman响应查看器有助于确保API响应的正确性。 API响应由正文,标题和状态代码组成。 Postman在不同的标签中组织正文和标题。 选项卡旁边会显示API调用的状态代码和完成时间。

响应还包含HTTP规范的默认描述。 但是,API作者也可以添加自定义消息。

1、保存响应

如果请求已保存在集合中,则可以保存该请求的响应。一旦返回响应,请点击保存响应按钮。输入一个名称来命名保存的响应。每当您加载请求时,为请求保存的所有响应都将作为示例提供。点击右上角的示例下拉菜单查看并选择已保存的示例。

2、查看响应

Postman为我们提供了几种工具来帮助我们快速查看响应数据。 响应体可以在以下三种视图中的一种中查看:

  • Pretty

       Pretty模式可以格式化JSON或XML响应报文,以便更容易查看。没有人希望通过缩小的单行JSON响应来寻找我们需要的字符串!突出显示Pretry模式中的链接,点击它们,可以通过链接URL在Postman中加载GET请求。为了浏览较大的响应报文,可以单击左侧的向下指向的三角形(▼)折叠响应报文。

       为了让Postman自动格式化响应报文,我们确保返回正确的Content-Type请求头。如果API没有返回Content-Type请求头,则可以通过JSON或XML强制进行格式设置。我们可以通过从“语言检测”下拉列表中选择“JSON”,或者在SETTINGS模式内的常规选项卡下强制默认显示为JSON格式。

  • Raw

        Raw视图只是最原始的方式显示响应报文的内容。

  • Preview

       Preview模式在沙箱中以iframe的形式呈现响应。默认情况下,某些Web框架会返回HTML错误,所以预览模式在此处特别有用。但是由于iframe沙盒限制,JavaScript和图像在iframe中被禁用。

3、响应头

响应头在Headers标签页下以键-值对的形式进行显示。鼠标悬停在标题名称上可以根据HTTP规范给出响应头的描述。如果我们发送的是HEAD请求,Postman会默认显示响应头标签页。如下图所示:

4、响应时间

Postman自动计算每次请求的总体时间。这个数据对于性能测试有一定的帮助。

5、响应大小

Postman将响应报文大小分解为响应体和响应头。但是响应报文的大小是近似的,并不会非常准确。

6、响应Cookie

服务器发送的Cookie在Cookie标签页中可见。要在Postman中管理请求中的Cookie,可以使用MANAGE COOKIES模式。

7、测试

除了从服务器获取请求的所有内容外,我们还可以看到针对构建请求时配置的测试程序,查看测试程序的测试结果。

三、API请求答疑解惑

可能在有些情况下,我们的API不起作用或出现意外的行为。如果我们没有收到任何响应,Postman会显示一条消息,指出连接到服务器时出现错误。例如下图这样:

有关错误可能原因的更多详细信息,请打开Postman Console。 它有关于故障的详细信息。在对API请求进行故障排除时,请考虑这些问题。

1、连接问题

如果Postman无法连接到我们的服务器,它会显示上面的消息。通常,检查是否存在连接问题的最简单方法是在浏览器(例如Chrome或Firefox)中打开我们的服务器地址。如果在浏览器中能正确访问它,而Postman却无法访问,那么可能的原因可能是:

  • 防火墙问题

       有些防火墙可能被配置为阻止非浏览器连接,在这种情况下,应该与网络管理员联系,以便Postman可以正确工作。

  • 代理配置问题
    如果我们使用代理服务器发出请求,请确保正确的配置了它。默认情况下,Postman使用操作系统的网络设置中配置的代理设置。Postman控制台将提供有关代理服务器的调试信息。

  • SSL证书问题
    当使用HTTPS连接时,Postman可能会显示上面的错误。在这种情况下,我们可以尝试在Postman设置中关闭SSL验证。如果这没有效果,我们的接口服务器可能正在使用客户端SSL连接。这也可以在Postman中设置中进行配置。在发送请求时,使用Postman控制台确保将正确的SSL证书发送到服务器。

  • 客户端证书问题
    服务器可能需要客户端证书。通过在Postman设置中添加客户端证书来解决这个问题。

  • 不正确的请求URL
    如果在请求中使用了变量,请确保它们是在环境或全局变量中定义的。未解析的请求变量可能导致无效的服务器地址。

  • 使用了错误的请求协议
    检查请求URL是否意外地使用了https://而不是http://(反之亦然)。

  • Postman本身出现Bug了
    当然了Postman这么优秀的软件,自身出问题的概率还是很小的,但是我们也不排除Postman它会出问题的。如果出现了问题,可以向Postman反馈你发现的问题,帮助Postman改进。

2、过短的请求超时设置

如果在Postman中配置了非常短的超时时间,则请求可能会在完成之前发生了超时,从而导致上面的错误代码块。尝试增加超时以避免此问题。

3、无效的响应

如果服务器发送错误的响应编码或无效的响应头,Postman将无法解释响应,导致上述错误。

四、调试和日志

Postman控制台类似于浏览器的开发者控制台,不同之处在于它针对API开发进行了调整。如果API或API测试没有按照我们期望的那样进行,那么Postman控制台将是我们进行调试的得力工具。只要Postman控制台窗口处于打开状态,所有的API活动都将记录在此处,我们可以通过这里查看底层发生了什么。

Postman控制台会记录以下信息:

  • 发送的实际请求,包括所有底层请求头和变量值等;
  • 服务器返回的最原始的响应报文,这里输出的响应报文是没有被Postman处理的响应报文;
  • 用于请求的代理配置和证书;
  • 测试脚本或预先请求脚本的错误日志;
  • 使用console.log()输出的内容。

在脚本中使用console.info()console.warn()将有助于确认执行的代码行。这个使用方法和JavaScript中的console.log()类似。

1、Postman控制台

  • 在应用程序菜单中前往View,然后单击“Show Postman Console”或使用键盘快捷键(CMD / CTRL + ALT + C)。每个调用及其标头和有效负载都将记录到Postman控制台。

2、DevTools

  • 在应用程序菜单中前往View,然后单击“Show DevTools”。
  • 在DevTools窗口中,单击顶级控制台选项卡应显示应用程序的调试日志。

四、授权

授权过程就是验证我们是否有权限从服务器访问所需的数据。发送请求时,通常必须包含参数以确保请求有权访问并返回所需的数据。Postman提供的授权类型可以让我们轻松处理Postman进行接口测试中的身份验证协议。

在Postman中,提供了以下的几种授权:

  • Inherit auth from parent
  • No Auth
  • Bearer Token
  • Basic auth
  • Digest Auth
  • OAuth 1.0
  • OAuth 2.0
  • Hawk Authentication
  • AWS Signature
  • NTLM Authentication [Beta]

Postman不会保存授权请求头数据和请求参数,以防止公开的敏感数据暴露,如API密钥。

如果想检查Postman生成的授权请求头和参数,可以单击预览请求按钮。

1、Inherit auth from parent

假设您将一个文件夹添加到集合中。 在“授权”选项卡下,默认授权类型设置为“从父级继承身份验证”。

“从父继承授权”设置表示默认情况下此文件夹中的每个请求都使用父级的授权类型。 在此示例中,集合使用“No Auth”,因此该文件夹使用“No Auth”,这意味着该文件夹中的所有请求都将使用“No Auth”。

如果要将父集合授权类型保留为“No Auth”,但更新此特定文件夹的授权助手, 可以编辑文件夹详细信息,从TYPE下拉列表中选择“Basic Auth”,然后输入您的凭据。 因此,此文件夹中的每个请求都依赖于“Basic Auth”,而父集合中的其余请求仍然不使用任何授权。

同样,如果要更新此文件夹中单个请求的授权,则只需为该请求选择不同的授权类型即可。

如果您有一组所有需要相同授权的请求,您可以为集合或文件夹中的所有请求定义授权,或者仅为每个请求单独定义授权。 如果创建新集合或文件夹,则父元素中的每个后续请求都将继承授权定义,除非用户明确选择其他类型。

要更新集合或文件夹授权,请单击集合或文件夹名称旁边的省略号(...),然后选择“编辑”以打开模式。 选择“授权”选项卡,从“类型”下拉列表中选择授权类型。 您还可以在最初创建集合时添加集合授权。

例如,如果使用“Basic Auth”创建集合,则集合中的每个请求都将使用相同的授权帮助程序。 如果您希望集合中的特定请求使用不同的授权或根本不授权,请使用“授权”选项卡下的“类型”下拉列表来定义特定请求的授权帮助程序。

2、No Auth

默认情况下,在下拉菜单列表中“No Auth”是第一个显示的。如果接口不需要任何授权,则请使用“No Auth”。

3、Bearer Token

“Bearer Token”是一个安全令牌。任何用户都可以使用它来访问数据资源,而无需使用加密密钥。下面来说说如何在Postman中如何使用“Bearer Token”:

(1)在授权标签中,从TYPE下拉菜单中选择“Bearer Token”;

(2)根据提示设置请求的授权参数,输入令牌的值;

(3)点击发送按钮。

4、Basic auth

基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据资源。这就需要我们输入用户名和对应的密码。

要使用Basic Auth:

  •  在“授权”选项卡中,从“类型”下拉菜单中选择“基本身份验证”。
  • 要为请求设置授权参数,请输入您的用户名和密码。
  • 单击“发送”按钮。

5、Digest Auth

在“Digest Auth”流程中,客户端向服务器发送请求,服务器返回客户端的nonce和realm值;客户端对用户名、密码、nonce值、HTTP请求方法、被请求资源URI等组合后进行MD5运算,把计算得到的摘要信息发送给服务端。服务器然后发回客户端请求的数据。

通过哈希算法对通信双方身份的认证十分常见,它的好处就是不必把具备密码的信息对外传输,只需将这些密码信息加入一个对方给定的随机值计算哈希值,最后将哈希值传给对方,对方就可以认证你的身份。Digest思想同样采如此,用了一种nonce随机数字符串,双方约好对哪些信息进行哈希运算即可完成双方身份的验证。Digest模式避免了密码在网络上明文传输,提高了安全性,但它仍然存在缺点,例如认证报文被攻击者拦截到攻击者可以获取到资源。

默认情况下,Postman从响应中提取值对应的值。如果不想提取这些值,有以下两种选择:

  • 在所选字段的高级部分中输入您自己的值
  • 勾选“Yes,disable retrying the request”复选框。

该表描述了Digest Auth的高级参数。 高级配置设置是可选的。 如果留空,Postman会自动为某些字段生成值。

高级参数 描述
Realm 服务器在www-Authenticate响应头中指定的字符串。
Nonce 服务器在www-Authenticate响应头中指定的唯一字符串。
Algorithm 一个字符串,指示用于生成摘要和校验和的一对算法。
qop 应用于消息的保护质量。 该值必须是服务器在www-Authenticate响应头中指定的备选方案之一。
Nonce Count 客户端在此请求中使用nonce值发送的请求数(包括当前请求)的十六进制计数。 如果发送了qop指令,则必须指定count,如果服务器未在www-Authenticate响应头中发送qop指令,则不能指定count。 Postman总是发送00000001作为随机数。
Client Nonce 由客户端提供并由客户端和服务器使用的不透明引用字符串,以避免选择明文攻击以提供相互身份验证并提供一些消息完整性保护。 如果发送了qop指令,则必须指定count,如果服务器未在www-Authenticate响应头中发送qop指令,则不能指定count。
Opaque 这是服务器在www-Authenticate响应头中指定的一串数据,这里应该使用相同保护空间中的URL保持不变。 我们建议此字符串为base64编码数据。

6、OAuth 1.0

OAuth 1.0是一种授权类型,使您可以批准与您联系其他应用程序的应用程序,而不会泄露您的密码。

要使用OAuth 1.0授权:

  • 在“授权”标签中,从“类型”下拉菜单中选择“OAuth 1.0”。
  • 从“添加授权数据到”下拉菜单中,选择“请求正文/请求URL”或“请求标题”。

当您选择“请求正文/请求URL”时,Postman会检查请求方法是POST还是PUT,以及请求正文类型是否为x-www-form-urlencoded。 如果是这样,Postman将授权参数添加到请求正文。 对于所有其他情况,它会将授权参数添加到URL。

  •  要设置请求的授权参数,请输入“Consumer Key”,“Consumer Secret”,“Access Token”和“Token Secret”。 您还可以设置高级摘要OAuth 1.0参数。

7、OAuth 2.0

OAuth 2.0是一种授权类型,使您可以批准与您联系其他应用程序的应用程序,而不会泄露您的密码。

要使用OAuth 2.0授权:

(1)在“授权”标签中,从“类型”下拉菜单中选择“OAuth 2.0”。
(2)从“添加授权数据到”下拉菜单中,选择"Request URL" 或者 "Request Headers"。
(3)要为请求设置授权参数,您有三个选项:

  • 点击“Get New Access Token”按钮,在弹出的对话框中输入对应的参数;单击“Request Token”按钮获取对应的Token。接下来有了对应的Token后,就可以点击“Send”按钮发送请求了;
  • 在“Access Token”输入框中输入一个Token,或者Token对应的环境变量,然后就可以点击“Send”按钮发送请求了;
  • 在“Available Tokens”下拉框中选择已经存在的Token,然后发送请求。

8、Hawk Authentication

hawk是一个HTTP认证方案,使用MAC(Message Authentication Code,消息认证码算法)算法,它提供了对请求进行部分加密验证的认证HTTP请求的方法,包括HTTP方法、请求URI和主机。

hawk方案要求提供一个共享对称密匙在服务器与客户端之间,通常这个共享的凭证在初始TLS保护阶段建立的,或者是从客户端和服务器都可用的其他一些共享机密信息中获得的。

9、Amazon Web Services (AWS) authentication

AWS是Amazon Work Services请求的授权工作流程。 AWS用户必须使用基于keyed-HMAC(哈希消息身份验证代码)的自定义HTTP方案进行身份验证。

阅读有关AWS文档上的AWS签名的更多信息:

要使用AWS身份验证:

  • 在“授权”选项卡中,从“类型”下拉菜单中选择“AWS Signature”。
  •  要为请求设置授权参数,请输入访问密钥和密钥的值。 您还可以设置高级AWS身份验证参数。
  •  单击“Send”按钮。

10、NTLM authentication

Windows Challenge/Response(NTLM)是Windows操作系统和独立系统的授权流程。 默认情况下,Postman从收到的响应中提取值,将其添加到请求中,然后重试。 Postman为您提供禁用此默认行为的选项。

要使用NTLM身份验证:

  • 在“授权”选项卡中,从“类型”下拉菜单中选择“NTLM authentication”。
  • 要为请求设置授权参数,请输入用户名和密码。 您还可以设置高级NTLM身份验证参数。
  • 单击“Send”按钮。

五、Cookies

Postman的本机应用程序提供MANAGE COOKIES模式,允许您编辑与每个域关联的Cookie。

要打开MANAGE COOKIES模式,请单击“Send”按钮下的“Cookies”链接。

这将打开MANAGE COOKIES模式,并显示域列表和与之关联的cookies。

1、创建 cookie

要为域添加新cookie,请单击“添加Cookie”按钮。 将创建根据HTTP状态管理标准的预生成cookie字符串,但您可以使用其下方显示的文本输入对其进行编辑。 单击“保存”按钮会将其保存到相关域下的应用程序cookie存储中。

2、添加域名

如果要为域列表中不存在的域添加cookie,可以通过在顶部的输入框中输入主机名(不带端口或http://)来添加cookie。 单击“添加”按钮会将其添加到域列表中。 然后,您可以通过选择该域并输入新的cookie值来为该域添加cookie,如上所述。

六、证书

Postman的本机应用程序提供了一种基于每个域查看和设置SSL证书的方法。

要管理客户端证书,请单击标题工具栏右侧的扳手图标,选择“Settings”,然后选择Certificates选项卡。

1、添加客户端证书

  • 要添加新客户端证书,请单击Add Certificate链接。
  • 在Host字段中,输入要为其使用证书的请求URL的域(无协议),例如echo.getpostman.com。
  • 您还可以在“端口”字段中指定要与此域关联的自定义端口。 这是可选的。 如果留空,将使用默认HTTPS端口(443)。
  • 在CRT文件字段中选择您的客户端证书文件。 目前,只支持CRT格式。
  • 在KEY文件字段中选择客户端证书密钥文件。
  • 如果在生成客户端证书时使用了密码短语,则需要在密码短语字段中提供密码短语。 否则,请留空。

添加证书后,它应显示在客户端证书列表中。

注意:不应为同一域设置多个证书, 如果设置了多个,则仅使用添加的最后一个。

2、使用证书

如果已添加客户端证书,则无需执行任何额外步骤即可使用客户端证书。 如果您向已配置的域发出请求,则只要您通过HTTPS发出请求,证书就会自动与请求一起发送。

【实例】向https://echo.getpostman.com/get发送请求,保持Postman控制台处于打开状态。 请注意,我们使用https来确保证书已发送。 响应到达后,切换到Postman控制台以查看您的请求。 如果您展开请求,您将能够看到与请求一起发送的证书。

参考学习:

https://learning.getpostman.com/docs/postman/

https://www.jellythink.com/archives/category/tool-tutorials/postman

测试网站:

https://docs.postman-echo.com/

https://www.juhe.cn

猜你喜欢

转载自blog.csdn.net/zhuyunier/article/details/87785791