摘要:很多同学在上遇到的不少问题,其实可以自我解决的,现在介绍一下上的调试方法。更多例子我们再来几个例子,调试的时候发出的请求,可以看到,传入了和。调试创建一条记录,日志是这是一条可以看到发出了的请求,批量保存。
很多同学在 LeanCloud 上遇到的不少问题,其实可以自我解决的,现在介绍一下 LeanCloud 上的调试方法。
LeanCloud 是通过 REST API 来进行前后端分离的,这意味着当出现问题的时候,首先应该看看网络请求是什么,来确定是客户端发出的请求不对,还是服务端处理请求不对。LeanCloud 上有专门的 REST API 文档。
概要通过调用允许打印日志的函数,来打印更多的日志,包括网络请求日志,根据具体的 REST API 请求和返回结果,从而快速定位问题。若对某个接口函数有疑惑,可快速翻阅 API文档。
初始化时调用以下函数来开启日志。注意发布应用时关闭日志,避免泄露数据。
Android SDK 2.6.7+:
AVOSCloud.setDebugLogEnabled(true);
iOS SDK :
setenv("LOG_CURL", "YES", 0);Android SDK 调试方法
先介绍 Android SDK 的调试方法,
开启调试日志首先在 Application 的 onCreate 中,开启调试日志,
然后,针对于下面的请求,fetch 一个 _User 对象,同时获取 friends 字段里的对象,
然后那里断点一下,可以看到,刚刚的请求和应答是这样的,[点击查看大图]
curl -X GET -H "X-avoscloud-Application-Id: APP_ID" -H "X-avoscloud-Application-Key: YourAppKey" -G --data-urlencode "include=friends" https://api.leancloud.cn/1.1/users/53f0d534e4b0c1ae470ca958
以及返回的 json 字符串,
{ "gender": 1, "friends": { "__type": "Relation", "className": "_User" }, "location": { "longitude": 116.316858, "latitude": 39.985525, "__type": "GeoPoint" }, "sex": true, "avatar": { "key": "4IC5arNWrQo6lC4jOCamCm8Zhh0aVLINVPpO6T0p", "name": "小z", "mime_type": "application/octet-stream", "bucket": "x3o016bx", "url": "http://ac-x3o016bx.qiniudn.com/4IC5arNWrQo6lC4jOCamCm8Zhh0aVLINVPpO6T0p", "createdAt": "2014-12-12T11:10:41.739Z", "objectId": "548acd31e4b03d0b8f8d4d83", "updatedAt": "2014-12-12T11:10:41.739Z", "metaData": { "_checksum": "251933a19cd401bae53aafd5cb445a5c", "_name": "小z", "owner": "53f0d534e4b0c1ae470ca958", "size": 45257 }, "__type": "File" }, "username": "小z", "mobilePhoneVerified": false, "createdAt": "2014-08-17T16:15:48.069Z", "objectId": "53f0d534e4b0c1ae470ca958", "importFromParse": false, "emailVerified": false, "updatedAt": "2014-12-17T06:56:56.842Z" }日志过滤
可以专门对此类日志进行过滤一下,以便快速获取信息,
Tag是:
===AVOS Cloud===
那么可以在 刚刚那个 REST API文档,看看这个请求是什么意思,文档上面说,
对那个 REST API 文档,搜索一下 include 即可以找到。
那么有了 curl 请求和请求结果,就可以判断很多事情了,有没有返回自己想要的值、返回了哪些字段等。对于 Pointer 类型的字段,返回的是 Pointer 类型,还是 Object 类型,Pointer 类型的话,只有 objectId,Object 类型还有相应的字段。
API 在线测试工具LeanCloud 还有特别好用的 API在线测试工具,比如针对上面的请求,我们迅速找到相应的 API,
然后,
只要把写入 class 和 objectdId 既可以获得格式化的 json 字符串。
就可以看看原来的 fetch 代码发生了什么。
iOS SDK 调试方法iOS SDK 上也是一样的,
应用启动后调用以下函数,
针对于这样一个查找用户的函数,查找用户名包含有子串 partName 的所有用户,
在结束的时候打上断点,那么可以看到日志输出,
这个请求经过 urlencode 了,找个工具 decode 一下,http://tool.chinaz.com/Tools/URLEncode.aspx,可以看到的是,
curl -i -k -X GET --compressed -H "x-avoscloud-request-sign: 517d516e7c09a72822e116e64d11e2ce,1418816439658" -H "X-avoscloud-Application-Production: 1" -H "X-avoscloud-Application-Id: x3o016bxnkpyee7e9pa5pre6efx2dadyerdlcez0wbzhw25g" -H "User-Agent: AVOS Cloud iOS-v2.6.8 SDK" -H "X-avoscloud-Session-Token: axchejue4dmu04h5radozyvnc" -H "Accept: application/json" "https://api.leancloud.cn/1.1/users?order=-updatedAt&where={"username":{"$regex":".*lzw.*"},"objectId":{"$ne":"54913d21e4b0c4eaaccc3a3e"}}"
可以看到查找用户,正则匹配.lzw.,同时 objectId 不是自己的,来找到其它人,并且根据更新时间的逆序排序。
那么就清晰了,能更多弄清楚后面是怎么工作的。
更多例子我们再来几个例子,
调试 loginlogin 的时候发出的请求,
curl -i -k -X POST --compressed -d "{"username":"lzw12","password":"lzw12"}" -H "x-avoscloud-request-sign: 3bd58a85549a3879442028630278ec43,1418814108622" -H "X-avoscloud-Application-Production: 1" -H "X-avoscloud-Application-Id: x3o016bxnkpyee7e9pa5pre6efx2dadyerdlcez0wbzhw25g" -H "User-Agent: AVOS Cloud iOS-v2.6.8 SDK" -H "Content-Type: application/json; charset=utf-8" -H "Accept: application/json" "https://api.leancloud.cn/1.1/login"
可以看到,传入了 username 和 password。
调试 save创建一条记录,
日志是:
curl -X POST -H "X-avoscloud-Application-Id: APP_ID" -H "X-avoscloud-Application-Key: YourAppKey" -H "Content-Type: application/json" -d "{"requests":[{"body":{"__children":[],"__internalId":"c9d38635-8336-4448-bb84-d99d89d15b4a","content":"这是一条Todo"},"method":"POST","path":"/1.1/classes/Todo"}]}" https://api.leancloud.cn/1.1/batch/save
可以看到发出了/batch/save 的请求,批量保存。
调试 push再来看推送的时候的请求,代码是这样的,
setQuery 那句是说,根据 installationId 来找到自己,然后进行推送。
curl -X POST -H "X-avoscloud-Application-Id: APP_ID" -H "X-avoscloud-Application-Key: YourAppKey" -H "Content-Type: application/json" -d "{"channels":["public"],"data":{"alert":"hello world from avoscloud."},"where":{"installationId":"4f55cffe-19d3-4d2f-b309-ddadd4f07b4e"}}" https://api.leancloud.cn/1.1/push
网络请求都可以这般输出日志,可以根据输出的日志来判断是哪一步出了错。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/15563.html
摘要:很多同学在上遇到的不少问题,其实可以自我解决的,现在介绍一下上的调试方法。更多例子我们再来几个例子,调试的时候发出的请求,可以看到,传入了和。调试创建一条记录,日志是这是一条可以看到发出了的请求,批量保存。 很多同学在 LeanCloud 上遇到的不少问题,其实可以自我解决的,现在介绍一下 LeanCloud 上的调试方法。 LeanCloud 是通过 REST API 来进行前后端...
摘要:前言在上一篇文章中我们详细讲解了用实现消息推送的流程,今天本文将继续讲解实现的消息推送。接入在接入之前,还是推荐先阅读官方的消息推送开发指南。实现该的定位为接收并初步解析通知数据。 前言 在上一篇文章 中我们详细讲解了用Leancloud实现iOS消息推送的流程,今天本文将继续讲解实现Android的消息推送。 接入Leancloud 在接入Leancloud之前,还是推荐先阅读Lea...
摘要:的数据强制刷新由于的数据绑定与更新策略,有时取回数据时数据并不能引起页面的变更,这时候就需要强制刷新页面绑定的数据了。这次重构差不多就用了四天的时间,写了个个个,按时交活儿希望本文可以在小应用的快速构建上给大家一个参考 作者:李宜栋 【 玩转 LeanCloud 】开发者经验分享: 学校有一个高考志愿填报的应用需要重构,之前的实现是通过构建 Laravel RESTful API ...
摘要:我们的产品覆盖了和,目前项目全都架在的云引擎之上。我们的方案是把业务代码从中抽出来了,做成了移动端,这样业务能在和中共用,移动端是基于的云引擎环境下开发的。在这个过程中,云引擎和都发挥了重要作用。 【玩转 LeanCloud 】活动开发经验分享: 作者:黄涛 大家好,我是 htoooth,在一家电商公司做 Node.js 开发,爱折腾,喜欢追新语言,像 golang、elixir、cl...
摘要:云函数是万金油为实现用户游戏数据存储和每日任务分发,我们最先用了存储服务和云引擎。不过我们并没有用提供的来直接调用存储服务,而是选择用调用云引擎里面的云函数,然后通过云函数调用存储服务来实现相应的逻辑。 【 玩转 LeanCloud 】开发者投稿分享: 作者:赵天泽 作为一个通过 LeanCloud 入门后端开发的小白,一年多的开发历程让我收获满满。多个项目也在 LeanCloud 可...
阅读 3091·2021-11-23 09:51
阅读 2545·2021-10-28 09:33
阅读 3287·2021-10-12 10:12
阅读 595·2021-10-08 10:04
阅读 3359·2021-09-22 15:13
阅读 831·2019-08-30 15:55
阅读 2784·2019-08-30 15:44
阅读 401·2019-08-30 13:04