NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
[TOC] # [Android] 使用 Postman 测试 API ## 推荐优先了解 [Nougat HTTP 基础推荐文章] [HTTP 基础知识] ## 简介 作为 **Android 开发者**,在编写应用页面时,页面中展示的数据往往是从 API 获取的。我们需要写代码,向 API 发送请求,请求成功后,才可以获取数据并使用。而 **Postman** 是**可以模拟向 API 发送请求**的工具。为什么需要先模拟发送请求,再写代码呢?因为如果直接写代码的话,是无法判断 API 的正确性的,假设 API 存在错误,那么根据 API 写的代码出错的几率也非常大。 **本文只涉及 PostMan 发送请求的简单使用,更多的功能介绍可以参阅 [PostMan DOC]** ## 安装方式 [官网下载] 选择对应的平台安装即可。 * MacOs * Windows * Linux * Chrome 插件 ## 软件界面 ![Postman界面](https://box.kancloud.cn/61bfe3faadb9c15b1fce9ded5ac408a0_1356x595.png) 1. 更改发送请求的方法,一般 GET 或 POST 居多 2. 输入 API 文档所提供的 URL 3. GET 方法如果需要参数,使用这个按钮添加参数 4. 配置好当前的请求后,按下这个按钮发送这个请求 5. 填写 Headers,常用的有 Authorization ,Content-Type 6. 填写发送请求时的 Body 部分,一般作为 POST 方法需要的参数 细心的读者可能也有发现,当发送请求的方法为 GET 的时候,Body 是不可选中的,当方法为 POST 的时候,Body 又被激活了。其中的原因是:往往发生请求时,要传递一些参数,**GET 把参数包含在 URL 中,POST 通过 Body 传递参数,**所以,如果你的请求需要传递参数,那么 GET 就使用 Params,POST 就使用 Body。<br/> 下面通过 [趣编程 API] 做示范: ## 测试个人技术文章列表 ![个人技术文章列表API](https://box.kancloud.cn/e87c003241c96b9ec7fe74ea98994c25_1399x598.png) API 文档中说明了发送请求需要的方法,Header,URL。我们在 Postman 里试一下。根据 API 文档提供的信息,填入以下数据 * 请求方法:GET * URL:http://coolcodeapi.wodetiku.com/my/articles * **Header:Authorization (复制了文档中的 Header-Example的值:Bearer+空格+Token)** >**什么是 Token** >1. 用户使用用户名密码来请求服务器 >2. 服务器进行验证用户的信息 >3. 服务器通过验证发送给用户一个 Token >4. 客户端存储 Token ,并在每次请求时附送上这个 Token 值 >5. 服务端验证 Token 值,并返回数据 [Token 定义来自网络文章,点击阅读原文] * Send:发送请求 ![个人文章列表Response](https://box.kancloud.cn/8e721e2b5e25f49975434488a923c130_1069x581.png) 如果你和我一样设置,并且按了 Send 按钮,那么应该会得到上图的结果看上去出了错误**Token Signature could not be verified.**无法验证令牌签名。<br/> 这里还需要关注一个东西:<br/> **Status [HTTP状态码] 通过数字反映了这次请求的成功或失败的信息。** 通过错误信息判断,是我们的 Token 值出了问题。这也难怪,Header-Example 只是告诉了我们一个格式,而且 Token 值本身存在过期的问题(相信大家都有碰到过,登录一个网站一段时间之后,需要重新登录)现在我们需要一个正确的 Token 值,上文有提到,使用用户名密码请求服务器,服务器验证后会发送给用户一个 Token 值,所以我们去寻找请求成功后会返回 Token 数据的 API。 ## 测试微信登陆 ![微信登陆API](https://box.kancloud.cn/e3248dfbb43af2ab5fd5945ac6855f59_1406x732.png) >POST 通过 Body 传递参数 这是之前提到的 这里需要再补充一点:我们传递的数据是 JSON 格式,所以在 Body 中我们需要这样设置 ![POSTBody](https://box.kancloud.cn/6d4ea323871e6c48f120dc6388a828cb_787x332.png) 经过这两点的说明,那么我们应该可以得到下面这样的设置界面(**当你在 Body 中设置了 JSON 格式,那么 Headers 会自动添加 Content-Type:application/json 字段**) ![微信登陆POST](https://box.kancloud.cn/ed6fbfb0fd53f1d1ab32c1f23a03f536_1365x439.png) * 请求方法:POST * URL:http://coolcodeapi.wodetiku.com/login/wechat * **Headers: Content-Type:application/json** * **Content-Type:请求体/响应体的数据类型** * **application/json:填入这个值就代表了 Body 中的数据是 JSON 类型** * Body 里所要填的数据是这样的(根据 Request-Example) { "wechat_id": "123456",//建议将example中的值改为123456这个账号,不然没有文章数据 "wechat_info": { "nickname": "shitlike", "avatar_url": "dwadwadwadwa" } } ![微信登陆Response](https://box.kancloud.cn/28fe3f6e51c097848005994afc2ff2da_1070x418.png) 请求成功了,拿到了我们需要的 Token 值,那么赶紧复制 Token 到我们最开始的个人技术文章请求方法中吧。 ## 重新测试个人技术文章列表 ![个人技术文章列表2Response](https://box.kancloud.cn/eba19c9b55ab93f9ddd0b697731ed94c_1293x767.png) 相信大家都可以得到这个界面。那么到了这一步,一次成功的 Postman 模拟请求就完成了,其实刚才也成功了一次,只不过我们的最终目的是希望获得个人文章列表的数据,所以目的达成了!接下来我们要做的当然是使用Retrofit在代码再实现一次这一过程,获取数据。如果你之前没有使用过Retrofit,推荐阅读[Retrofit初步使用]<br/> *注:如果在使用过程中存在请求失败的情况,有两方面的原因:<br/>* *1.自己在构造请求方法时,与 API 文档要求不符(请求方法不一样,没有传入正确的参数等)* *2.服务器自身出了问题* *所以建议大家检查自己设置的同时,也可以询问下导师,可以更好地解决问题* ## 测试[有道翻译 API] 如果读到这里,说明大家已经会设置 Body 参数使用 POST 请求了,这里再举例为大家说明一下,使用 GET 请求时设置 Params 参数。<br/> *注:使用有道翻译 API 需要注册,所以每个人的参数不一样,这里只是为了演示 GET 方法带有 Params 参数,如果大家需要长期使用,请自行注册一个账号,很容易注册。* >请求方法:GET >URL:http://fanyi.youdao.com/openapi.do >(当你设置 Params 的时候, URL 就会发生变化,而不是手动加上去的) >参数(Params): >keyfrom:Fragment >key:1585625488 >type:data >doctype:json >version:1.1 >q:要翻译的文本 这里我打算翻译 “Android” 这个单词 按照上面的信息,我们在 Postman 中构建这个 GET 请求 ![有道Request](https://box.kancloud.cn/473bd0622a3645d26047f8f8ef85c8ea_1067x652.png) 请关注 **Status** 和返回的 **Body** 数据,相信你一定也可以获取成功响应的翻译数据。 ## 总结 经过本篇文章的学习,希望可以帮助你更快地测试所要使用的 API。Postman 的功能远远不止这些,由于我目前的水平有限,没有办法很好地演示更多的功能,希望你之后能学习到更多实用的技巧,如果可以的话,也希望你可以留言或者写新的文章分享,谢谢。 [有道翻译 API]:http://fanyi.youdao.com/openapi?path=data-mode [Nougat HTTP 基础推荐文章]:http://www.kancloud.cn/yaro/nougat/269751 [趣编程 API]:http://apidoc.tech/coolcode [官网下载]:https://www.getpostman.com/ [PostMan Doc]:https://www.getpostman.com/docs/ [Token 定义来自网络文章,点击阅读原文]:http://www.jianshu.com/p/576dbf44b2ae [HTTP状态码]:http://tool.oschina.net/commons?type=5 [HTTP 基础知识]:http://www.jianshu.com/p/a6d086a3997d [Retrofit初步使用]:http://blog.qiji.tech/archives/8758