API开发神器-Postman

作者: Yuan_Jie | 来源:发表于2016-06-13 21:49 被阅读17372次

    Postman helps you develop APIs faster.

    豪华午餐

    Postman

    Postman

    构建、管理、文档化API

    Newman(我真的不是MP3)

    Newman

    Newman is a command-line collection runner forPostman. It allows you to effortlessly run and test a Postman collection directly from the command-line. It is built with extensibility in mind so that you can easily integrate it with your continuous integration servers and build systems.

    • 安装: newman:npm install -g newman
    • 功能: 直接运行Postman的接口Collection数据(本地或远程)
    • 运行: 本地Postman保存的Collection内容
    ➜  Downloads newman -c Demo.postman_collection.json
    
    Iteration 1 of 1
    200 1479ms Open the url of Baidu. [GET] http://www.baidu.com
        ✔ Status code is 200
    
    Summary:
    
    Parent                      Pass Count   FailCount
    -------------------------------------------------------------
    Collection Demo                      1           0
    
    Total                                1           0
    
    • 运行远程Postman
    ➜  ~ newman -u https://www.getpostman.com/collections/676a42223e14bf54ad84
    
    Iteration 1 of 1
    200 240ms Open the url of Baidu. [GET] http://www.baidu.com
        ✔ Status code is 200
    
    Summary:
    
    Parent                      Pass Count   FailCount
    -------------------------------------------------------------
    Collection Demo                      1           0
    
    Total                                1           0
    
    Interceptor

    Interceptor

    Postman interceptor brings the power of your Chrome window to Postman! You can set custom headers (including cookies) from within Postman, and view cookies already set on the domain. You can also capture requests being sent from Chrome and import them into Postman. This makes building APIs a breeze!

    初级使用

    录制API-Interceptor

    • 设置浏览器中的Interceptor:打开开关、设置Filter(仅过滤www.jianshu.com
      Chrome中设置Interceptor
    • 设置Postman中的Interceptor:打开开关
      �Postmsn中打开Interceptor
    • 开始录制:在Chrome浏览器中输入http://www.jianshu.com/p/4a677c5f79f1,回车后,查看Postman的请求录入
      录制API结果

    回放API-Postman

    • 选择Postman中的API:Get http://www.jianshu.com/p/4a677c5f79f1
      指定API
    • 点击Send,进行回放。可查看到请求的返回状态码200、数据Body
      回放结果

    指定API请求-Postman

    高级使用

    �规划管理API-Postman+Collection

    将所有的API进行分类管理,如按模块、系统、类型

    保存API至Collection

    • 选中需要保存的API,点击请求列表中的Save to collection
      Save to collection
    • 可将此API保存至已有的Collection新增Collection

    重命令API请求-便于管理和查看

    • 切换到Collections列表,点击API请求的操作区,选择Edit
      Edit-API信息

    常用权限应用尽有-Authorization

    Authorization设置
    • Postman在请求时,可指定此次请求Auth方式
    • 可设置Auth中的具体内容,完全自行定义。如设置Basic Auth中的用户名和密码
    Basic Auth

    完全自定义的头-header

    Header设置
    • 编辑已有Header中的元素
    • 新增Header中请求时,需要的Key:Value
    • 禁用及启用Header中的元素,对于不清楚API请求时,具体哪些是必须要传递的比较有用

    完美的数据体-body

    Body设置
    • 在请求需要发送数据体时,可通过设置body内容
    • 支持form-data/x-www-urlencoded/raw/binary,格式的数据

    请求前还能做点事-Pre-request Script

    Pre-request Script设置
    • 请求发送前,可进行一些脚本设置。如:设置或清除参数、变量

    验证API请求结果-Tests

    Postman提供了常用的测试功能:返回内容处理、状态码判断、请求超时等。点击后自动添加到Test脚本中

    Test命令集合

    进阶使用

    带你快速走向各个环境-Environment

    • 添加QA环境URL地址变量
      添加QA环境的地址变量
    • 添加DEV环境的URL地址变量。此时就有两个环境地址
      QA、DEV,两个环境
    • 修改请求中的URL地址为:{{URL}}p/4a677c5f79f1,切换环境至QA环境
      变更URL、切换环境
    • 点击Send,请求QA环境中的数据
      真实的请求QA环境

    使用Evnironment,可设置环境地址及环境中的不同数据,便于在跨环境后, 相同API可快速使用,减少调整API的成本

    分享你的成果-导出/导入 or share

    导出-Download

    • Postman中有Download功能(即导出功能),且Download后的可直接导入
    • 可将CollectionEnvironment的数据进行Download
      PS:导出的数据其实是JSON数据格式,可随意

    导入-Import

    • 导入所有导出的数据
    • 被导入的数据格式与内容与导出时,完全一致

    分享-share

    • share功能需要登录后,才能使用。且shared成功后,对应的链接会保存到用户数据中
      share-link
    • 点击链接,会直接打开share的API设置内容

    导出/导入、share,便于在团队内部协作时使用,API的请求及管理团队化

    �海量执行你的请求-Runner

    当你有大量的API时,肯定想一次执行多个多次执行多个,Postman的Runner可以满足你的需求。

    • 调整API的结构、添加必要的测试验证
      调整
    • 打开Runner,设置执行参数:选择要执行的Collection、执行多少次Interation、请求的延迟Delay、数据文件、变量控件
      执行参数
    • Start Test查看运行结果RESULTS
      Results

    �CI挂起来-Newman

    直接使用Newman命令,快速把Postman与CI集成起来(直接使用shell命令,即可)。

    newman -c demo.postman_collection --exitCode 1
    

    PS:

    • 3.2.0版本之后,将原来的Jetpack(Runner/Newman)功能免费,以上所提到的功能全部免费使用
    • 本文�使用版本为4.2.2

    参考

    相关文章

      网友评论

      • 木子李呀林夕梦:写的很详细~最近也爱上了postman,很棒~~
        Yuan_Jie:@木子李呀林夕梦 谢谢,欢迎多交流
      • 北末_染:可做图片接口么
        Yuan_Jie:@北末_染 可以的
      • bcb7ec2200dd:你好,请问在使用import功能的import from link功能,点import按钮有时候没反应,有时候有可以成功import是怎么回事?楼主有遇到么?
        Yuan_Jie:没遇到过
        经常import导入的需求是什么?
      • 张小Di:你好,我在pre-request script中添加了前置条件,运行的时候怎么提示“Something went wrong while running your scripts. Check Postman Console for more info.”,这个怎么解决呢
        Yuan_Jie:能提供更加完善的信息么?
        命令行 执行测试:看下命令行的日志信息,有提示信息
        界面 执行测试:看下如下区域,应该有提示信息
      • f3d4a5864b5d:mock server的response body可以是动态生成吗?有了解过吗?
        Yuan_Jie:不好意思,刚看到消息。
        MockServer一般是无法生成动态数据。但如果想要动态数据,可以在 MockServer 的数据生成时,做一些处理
      • nightpioneer:请问怎么设置请求的超时时间
        Yuan_Jie: @nightpioneer
        SNIPPETS中可以设置超时时间
      • 气吞山河气盖世:谢谢,这教程很详细
        Yuan_Jie: @气吞山河气盖世 多多交流
      • 我本佛山人:Share功能太糟糕了,比如我当前分享了一个URL出去,被另一个帐号导入进它的工作环境中了,此时我更改了API,但对方帐号并没有自动更新,或者说对方再重新导入一次这个分享的URL也不行,必须需要我重新生成URL再分享,让对方导入。这点做得特别不好,希望下一个版本能有改进吧。或者是否是把这个功能放在了收费版中了
        Yuan_Jie:有两个方法可以解决:
        1,免费:将你的API都保存到Collection中,Collection导出文件保存到 资源管理器中(如Git、SVN)。有人修改后,直接将最新提交到资源管理器中。每次其他人在使用的时候,先获取最新
        2,收费:使用Postman Pro版本,专门用于团队协作。https://www.getpostman.com/docs/postman/team_library/sharing
      • 6d3a1694bc1a:您好,想请教个问题(实际使用中一直遇到未解决的):
        POST请求使用了BODY,ROW(JSON格式),如下模板所示:
        {
        "recordId": "120",
        "recordClassId": 709,
        "fileds": [{
        "enName": "Type",
        "filedValue": "0001",
        "filedType": "Dictionary"
        },
        {
        "enName": "Total",
        "filedValue": 123.45,
        "filedType": "number"
        }
        }
        但每次请求时,只有上面的“recordId”是变化的(如有规律递增),
        为了快递地进行自动化测试,请求有什么好方法能实现?
        6d3a1694bc1a:@Yuan_Jie 模板的"fileds": [{
        "enName": "Type",
        "filedValue": "0001",
        "filedType": "Dictionary"
        },
        {
        "enName": "Total",
        "filedValue": 123.45,
        "filedType": "number"
        }后少了一个“]"。
        6d3a1694bc1a:@Yuan_Jie ,body-raw中如何使用全局参数?
        一般form-data/x-www-urlencoded形式的请求容易实现,但我说的是raw形式下填充的JSON参数。由于我模板不能用form-data/x-www-urlencoded形式来请求(我的能力)...
        Yuan_Jie:@nextdog2
        "recordId"的值可以设置为全局参数,在每次请求前,使用"Pre Request Scripts"来设置本次请求的"recordId"的值。
        具体API,可以参考这里https://www.getpostman.com/docs/sandbox
      • _上邪_:使用起来确实方便了不少,但是有一个问题就是这种请求是无法携带session的啊,即便我是从在浏览器已经登录了,然后再启动postman,仍然无法在请求中获取session信息,这有什么好办法没!
        Yuan_Jie:@QQ南风 可以添加到Cookie中,参考 :https://www.getpostman.com/docs/interceptor_cookies
      • MacLinuXP:Apizza这个工具也不错(http://apizza.cc?f=9727js)国内版Postman,使用更简单,可能功能还没有Postman强大,但是一般情况都能满足了 :smile:

        这是是使用方式:https://my.oschina.net/maclinuxp/blog/753515
        Yuan_Jie: @MacLinuXP 看了下这个工具,确实跟POSTMAN有点类似
      • 林林小小:不错的工具,但是有些内容对于我这种初学者来说还是不太懂
        Yuan_Jie:@林林小小
        确实是个挺实用的工具。在使用过程中如果有什么问题,欢迎交流。
      • 09eb3479051b:哎哟,不错哟
        Yuan_Jie:@taozhi8833998 :grin: 用起来
      • athan:很给力
        Yuan_Jie: @athan 用起来😁
      • 凡人法相_仙逆遮天:mark
        Yuan_Jie: @凡人法相_仙逆遮天 欢迎交流
      • Echo剑心:开发必备,调API离不开他 :smiley:
        Yuan_Jie: @Echo剑心 是的,很实用,也很方便
      • 左蓝:虽然知道很出名,却一直不知道这神器干嘛的。。。。
        Yuan_Jie: @左蓝 用起来,有啥问题欢迎交流
      • 冰川孤辰js:谢谢,环境切换功能对我很有用,之前都没有好好学习过这插件 :+1:
        Yuan_Jie:@冰川孤辰 同感。发现这种玩法之后,效率会提高很多。

      本文标题:API开发神器-Postman

      本文链接:https://www.haomeiwen.com/subject/xpaorttx.html