Postman调试技巧之接口签名

1. 引言

你们在调用第三方接口时,一般都会获得ClientIDSecretKey ,而后再经过签名后才能请求第三方接口。那么,在仅仅使用Postman的状况下,可否完成这样繁琐的签名操做呢?答案是确定的。接下来让咱们一块儿了解Postman的强大之处。前端

2. 服务端

首先咱们看看下图服务端的校验逻辑:后端


细心的朋友可能会发现,这里我只获取了请求中的Sign和Timestamp,而MasterKey是直接从配置中获取。本文重点讨论Postman的接口签名,因此简化了服务端的逻辑。须要了解接口签名设计的能够自行搜索学习,本文不作阐述。函数

这里咱们能够看到接口请求中须要包含x-signx-timestamp,签名规则为 MD5(${masterKey}.${timestamp}) 了解到接口验证规则后,咱们能够继续日后走。工具

3. 构造请求

咳咳,接下来到本文重点。首先看看Postman的主界面:学习


为了方便后续的测试,咱们先把Host和MasterKey添加到环境变量中:测试


紧接着咱们把请求方式、接口地址、请求Body依次填写完整:设计


好了,内容都填好后,咱们要往Headers里填写x-signx-timestamp:code


如今问题来了,正常状况下咱们须要在Headers里面填写固定的内容。可是如今咱们要填写的x-signx-timestamp是须要计算出来的。没法直接填写,怎么办?cdn

在解决这个问题以前,我须要补充一些知识点。让咱们先来了解一下Postman的工做流程:blog


Postman每发起一个请求以前,均可以选择执行一段pre-request script。这偏偏给了咱们机会在请求发起以前生成咱们须要的数据。闲话少说,咱们打开Postman中的pre-request script面板:


这里须要补充一下,pre-request script仅支持JavaScript语法。有了这个强大的功能,咱们回过头来梳理下咱们要作的事情:生成x-signx-timestamp。咱们把任务分解成更小的步骤:

  1. 获取MasterKey
  2. 得到当前时间戳
  3. 计算MD5签名值
  4. 将时间戳和签名值填充到Headers

第一步很是简单,还记得刚才咱们把MasterKey放到哪里了吗?没错,咱们在一开始就把MasterKey放到了环境变量里,而面板的右侧有一个Snippet:Get an environment variable,点击后便可获得获取环境变量的语句,咱们稍加修改就变成这样:


第二步也不难,咱们利用Date.now()生成当前时间戳:


接着咱们继续下一步。咦,计算MD5???JavaScript并无提供现成的计算函数,怎么办?Postman早就考虑到了这点,因此内置了一系列经常使用的库:


如今咱们能够利用CryptoJS这个库来完成计算MD5值:


接着,咱们在变量中添加signtimestamp


最后,咱们在headers中添加{{timestamp}}和{{sign}}:


4. 验证结果

咱们将写好的请求发出,并在服务端断点,看看是否能获取到x-signx-timestamp,而且对比计算出的sign是否一致:


签名结果一致,校验成功!

5. 总结

Postman是一个很是强大的接口工具,就像他说的那句话同样:

Postman Makes API Development Simple.

而咱们也学习到如何在接口请求发起以前进行一些逻辑操做而且修改请求头的内容。顺带还给前端的同窗粗略地了解后端的接口签名设计是如何工做的。后续我还会继续挖掘Postman的一些好玩的技巧,帮助你们更好的利用Postman来提升效率。

相关文章
相关标签/搜索