Scratch3技术分析之项目主页API(第3篇)
文章目录
本文将关心项目主页涉及的API。
相关的API包括:
- 拉取项目数据
- 更新项目信息
- 更新项目名
- 更新操作说明
- 更新备注与谢志
- 点赞(❤️/⭐️)
- 被改编/浏览的次数
- 评论
我们以测试项目https://scratch.mit.edu/projects/277117877
为例, 打开页面,加载的数据还真不少。
其中https://scratch.mit.edu/js/projects.bundle.js
足有4.7M,下载时间就用了9.3s。
拉取项目数据
我们回到正题,开始关心各个API。既然是项目主页,首先得把整个项目的数据拉进页面,供用户浏览。我们便从这个说起。
项目数据包括项目的内部数据
和项目的外部数据
(在Scratch3技术分析之创作平台API(第1篇)定义了这两个概念)
|
|
项目的内部数据
GET https://projects.scratch.mit.edu/277117877
|
|
为了获得好的阅读效果,你可以将它们复制到https://jsoneditoronline.org/
项目的外部数据
GET https://api.scratch.mit.edu/projects/277117877
|
|
每个字段的含义参考:Project Object
更新项目信息
更新项目名
PUT https://api.scratch.mit.edu/projects/277117877
以json形式提交了: {"title":"test-api2"}
服务器返回和GET https://api.scratch.mit.edu/projects/277117877
一样的信息。
可以看出它们的url也是一样的
更新操作说明
PUT https://api.scratch.mit.edu/projects/277117877
以json形式提交了: {"instructions":"操作说明test"}
服务器返回同上。
更新备注与谢志
PUT https://api.scratch.mit.edu/projects/277117877
以json形式提交了: {"description":"test"}
服务器返回同上。
一致性非常好。
点赞(❤️/⭐️)
❤️代表loves
, ⭐️代表favorites
这两个的接口十分相似:
|
|
后端返回分别为
|
|
如果你要取消它们,API分别为
|
|
被改编/浏览的次数
被浏览的次数,一个用户最多贡献一次。可以使用redis的set来做(记录用户id)。
评论
最后我们来关心评论。这部分稍微复杂些。
顶层评论
POST https://api.scratch.mit.edu/proxy/comments/project/277117877
提交的json数据为: {"content":"test","parent_id":"","commentee_id":""}
注意到顶层评论的parent_id为空。
后端返回:
|
|
子评论
POST https://api.scratch.mit.edu/proxy/comments/project/277117877
提交的json数据为: {"content":"子评论","parent_id":106196727,"commentee_id":40103875}
后端返回:
|
|
对子评论的回复
POST https://api.scratch.mit.edu/proxy/comments/project/277117877
提交的json数据为: {"content":"对子评论 的回复","parent_id":106196727,"commentee_id":40103875}
后端返回:
|
|
可以看出parent_id
始终指向顶级评论
。
关闭评论功能
PUT https://api.scratch.mit.edu/projects/277117877
提交的json数据为: {"comments_allowed":false}
删除评论
删除权利在项目拥有者手中,而不在评论发出者手中。
DELETE https://api.scratch.mit.edu/proxy/comments/project/277117877/comment/106196842
返回:{}
举报评论
POST https://api.scratch.mit.edu/proxy/project/277117877/comment/106196741/report
返回值: {"reportId":null}
文章作者 种瓜
上次更新 2019-01-15