要解决的问题

  • 想知道 SDK 与服务器通信的具体内容,这样可以方便调试。
  • 很多地方出现「curl 命令」,但是自己不擅长使用命令行,希望调试这些请求。
  • 想调试云函数。

Postman 简介

Postman 是一个 HTTP Client 工具,可以方便的自定义 HTTP 请求,非常适合用来调试 REST API,并且有一系列辅助功能,比如请求历史记录,环境变量,请求分类收藏等。官网: https://www.getpostman.com/485

Postman 有 Chrome 插件版本,也有独立应用版本,差别不大。

场景 1: curl 命令转化

在 LeanCloud 文档很多地方都能看到类似的 curl 命令,比如 这段65 文档:

为了在 LeanCloud 上创建一个新的对象,应该向 classURL 发送一个 POST 请求,其中应该包含对象本身。例如,要创建如上所说的对象:

curl -X POST \
  -H "X-LC-Id: 4h2h4okwiyn8b6cle0oig00vitayum8ephrlsvg7xo8o19ne" \
  -H "X-LC-Key: 3xjj1qw91cr3ygjq9lt0g8c3qpet38rrxtwmmp0yffyoy2t4" \
  -H "Content-Type: application/json" \
  -d '{"content": "每个 Java 程序员必备的 8 个开发工具","pubUser": "LeanCloud官方客服","pubTimestamp": 1435541999}' \
  https://api.leancloud.cn/1.1/classes/Post

如果要「翻译」成 Postman 上的请求,是这样的:

场景 2:SDK debug 信息

有时候希望指导 SDK 与服务器通信的具体内容,能解决 LeanCloud SDK 中70%问题的调试方法 的文档提到了如何开启 SDK 的 debug 日志功能。

开启 debug 日志之后,所有 SDK 网络请求都会输出类似 curl 的命令,比如刚才文档里提到的这个命令:

curl -X GET
 -H X-avoscloud-Application-Id: APP_I
 -H X-avoscloud-Application-Key: YourAppKey
 -G --data-urlencode 'include=friends'
 https://api.leancloud.cn/1.1/users/53f0d534e4b0c1ae470ca958

整理到 Postman 是这样的效果:

场景 3:调试云函数

通过 Postman 来调试云函数也非常方便,而且还有历史和收藏的功能,非常方便重现请求。比如云引擎 Node.js 默认项目框架11 本地运行之后,可以在 http://localhost:300122 看到类似这样的云函数调试页面:

云函数本质上也是运行在 web 服务器上,通过 REST API 对外提供服务的,具体的其 url 是 https://api.leancloud.cn/1.1/functions/<云函数名称> ,在 REST API - 云函数19 部分可以看到如何使用 curl 来请求云函数,比如文档里就有类似这样的说明:

云函数可以通过 REST API 来使用,比如调用一个叫 hello 的云函数:

curl -X POST \
  -H "X-LC-Id: 4h2h4okwiyn8b6cle0oig00vitayum8ephrlsvg7xo8o19ne" \
  -H "X-LC-Key: 3xjj1qw91cr3ygjq9lt0g8c3qpet38rrxtwmmp0yffyoy2t4" \
  -H "Content-Type: application/json" \
  -d '{}' \
  https://api.leancloud.cn/1.1/functions/hello

转换为 Postman 上的请求类似这样:

其他补充

Postman 会把之前发过的请求列表显示在左侧,而且还有请求收藏的功能,可以方便的使用 Postman 来保存重要的,常用的请求,甚至可以用来做测试。

而且还有「环境」的概念,比如创建三个环境: dev,stg,prod:

然后测试云函数可以这样写:

结束

希望能给大家带来帮助。

4 人赞了这个帖子.
  • 那对于模拟接口呢?如何实践?在开发前预先定义好接口,前后端同步根据文档开发接口应该是比较有用吧,目前主要在用RAP进行API文档编写、接口模拟和测试

  • 然后,后端写云函数,前端就用 云函数对应的Rest API进行请求怎么样?

谢谢

抱歉,我没明白 “模拟接口” 是什么意思?

然后,后端写云函数,前端就用 云函数对应的Rest API进行请求怎么样?

我们开发的方式很多时候是前后端工程师一起沟通,然后后端先实现,完成后提供一批 Postman 的请求给前端工程师,这时候后段基本处于可用状态,然后前端工程师根据 Postman 上的请求和响应进行前端开发。

哦哦,理解,模拟接口的话,就是模拟数据的意思,懂了,谢谢

你好,我有一个疑问,我在我的应用里使用到了REST API,但是 X-LC-Id 和 X-LC-Sign 或者 X-LC-Key 都放在了请求头里面,这些都可以被三方工具抓取到,请问有什么办法解决这个问题吗?

你好,请求服务器使用的 https 协议,第三方抓不到的。

111557 marketing@leancloud.rocks6于2017年3月23日周四 下午9:31写道:

你要,如果是伪造证书模拟中间人,客户端是需要额外操作的(需要强制信任证书),所以正常使用时终端用户不会无故去信任一个额外的证书。

另外,不是说隐藏了 appKey 应用就安全了,千万 不要 通过试图隐藏 appKey 来保证数据安全,相关文档和文章:

https://leancloud.cn/docs/acl-guide.html74
https://blog.leancloud.cn/5687/54

好的,谢谢。