"概述 该文档主要面向社区客户端开发者,如果你想开发一个移动端 APP 的话请仔细阅读该文档。如果你是博主,请参考[链接]。 目前以下列出的 API 已经可用,大家有什么想补充的请跟帖。 使用原则 欢迎用于 APP、插件、数据分析研究等 禁止用于以内容填充为目的应用或站点 公共约定 对于请求和响应的一些公共约定在这里统一 .."

📝 社区客户端 API 文档

概述

该文档主要面向社区客户端开发者,如果你想开发一个移动端 APP 的话请仔细阅读该文档。如果你是博主,请参考内容 API 开放,欢迎各位独立博客主进行连接

目前以下列出的 API 已经可用,大家有什么想补充的请跟帖。

使用原则

公共约定

对于请求和响应的一些公共约定在这里统一进行描述。

HTTP

User-Agent

不要使用 HTTP Client 库自带的 UA,请一定要自定义 UA,推荐格式 {App}/{Ver},比如 Solo/2.9.5。如果不自定义 UA,请求将会被社区的流量监控系统阻断,并且对发起请求的 IP 进行一定时间的拦截。

鉴权

列表分页

响应结构

响应中的 HTTP body 为 JSON 结构,固定包含 3 个字段:

{
    "sc": 0,
    "msg": "",
    "data": null
}

其中:

注意事项

帖子

获取最新帖子列表

GET 方法:

获取领域帖子列表

获取标签帖子列表

示例:

获取帖子详情

发布帖子

获取帖子详情用于更新

更新帖子

回帖

发布回帖

领域

获取领域列表

获取领域详情

标签

获取标签列表

获取标签详情

用户

根据用户名获取用户详情

根据用户序号获取用户详情

获取用户帖子列表

获取用户回帖列表

获取用户关注帖子列表

获取用户关注用户列表

获取用户关注标签列表

获取用户收藏帖子列表

获取用户关注者列表

通知

获取未读计数

获取收到的回帖消息列表

获取收到的回复消息列表

获取提及我的消息列表

获取我关注的消息列表

获取我的积分消息列表

获取同城广播消息列表

获取系统公告消息列表

榜单

获取新注册用户列表

获取粉丝榜

登录

密码验证

两步验证

登出

活动

领取今日签到奖励

TBD

  • 黑客派

    黑客派是 B3log 开源社区的线上论坛,这里主要汇聚了工程师和设计师。HacPai 分别取 Hacker / Painter 的头三个字母组成,源自《黑客与画家》

    我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

    更多细节请浏览黑客派简介

    286 引用 • 5634 回帖 • 782 关注
  • Sym

    Sym 是一个用 Java 实现的现代化社区(论坛 / 社交网络 / 博客)平台,“下一代的社区系统,为未来而构建”。黑客派就是使用该系统搭建的 ❤️

    381 引用 • 3945 回帖 • 645 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    46 引用 • 289 回帖
  • 客户端
    4 引用 • 85 回帖
感谢    关注    收藏    赞同    反对    举报    分享
优质回帖
  • lijp   1 感谢  

    补充: ①感谢、like、unlike、收藏、查看的接口; ②相关帖子的列表接口; ③搜索的接口;(不知道能不能直接在移动端集成 Algolia) ④书单的接口;

    其他的一些很好玩,但我觉得暂时没必要(此刻、财富排行及消费排行)

  • Vanessa  

    0e060c04352a4a4092e3fab5bab6b873-image.png

    这几个怕是要提供一下。还有消息推送哟。

  • Vanessa  

    • 文章详情页面评论需要下拉刷新,重新给一个接口
    • 文章详情页面返回 html

72 回帖    
请输入回帖内容...
  • ZephyrJung      

    看不下去了,挽尊……

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    谢谢,还是你好 😂

    感谢    赞同    反对    举报    分享       评论    回复
  • Angonger    

    到此一游

    感谢    赞同    反对    举报    分享       评论    回复
  • meikaiyipian      

    发现 D 大写文档的手法很熟练

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp   1 感谢      

    补充: ①感谢、like、unlike、收藏、查看的接口; ②相关帖子的列表接口; ③搜索的接口;(不知道能不能直接在移动端集成 Algolia) ④书单的接口;

    其他的一些很好玩,但我觉得暂时没必要(此刻、财富排行及消费排行)

    感谢    赞同 1    反对    举报    分享       评论    回复
  • maomaomao      

    登陆注销在哪里?

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    用户类别下面有登出的

    感谢    赞同    反对    举报    分享       评论    回复
  • maomaomao      

    84c971cb548944b8ac0938edc466def2.png

    完全没看懂这个,你也没给个地址?

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    近两天会完成的,目前还在开发中 😅

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • maomaomao   1 感谢            

    原来如此,我还找半天

    感谢    赞同    反对    举报    分享       评论    回复
  • scorpion      

    我来尝试下搞一个 ios 的,嘿嘿

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • lijp            

    你是王同学吗?

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • lijp      

    1f02adc6bc8847a495e5fba7c7535828-Screenshot20170306114420.png

    看了一圈,朋也用的CNode-Material-Design这个 android 框架还不错。

    感谢    赞同    反对    举报    分享       评论    回复
  • R      

    点赞,sym 就差手机客户端了 / 萌萌哒

    感谢    赞同    反对    举报    分享       评论    回复
  • scorpion            

    不是,我是张同学,一个你不认识我,我不认识你的张同学, 哈哈

    2 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    十年之前,一个陌生人

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp            

    张同学,添加我一下 Q,咱们移动开发的有个讨论组。我的 Q:1183889404

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • scorpion            

    我只是酱油型 IOS,水货一枚,主要是搞 PHP 的

    2 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • lijp            

    谦虚了,我也是水货啊,放心大胆的来吧。加我 Q:1183889404

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp            

    借用大 D 的话,这又不是什么火箭上天的工程,就是耍,自己高兴就行,

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp      

    补充:
    缺少回帖评论的列表;

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp      

    缺少回帖评论的列表,能不能放在这个接口中,https://hacpai.com/api/v2/article/{articleId}

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp      

    20f32ec59f914a2c86d4b1f9e0581d3c.png

    latest/hot,good,reply

    这几个接口应该是可以被浏览的

    感谢    赞同    反对    举报    分享       评论    回复
  • lijp      

    9d51cdfb2eee49fca631bb799528b546.png

    这几个接口也是。

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    好的,稍后调整

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • xjf1128      

    哪些 API 需要登录的,希望能标记下。(我一直以为浏览帖子详情不需要登录。。。)

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    按返回状态码判断吧,因为是动态决定的

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    建议加上限制,可参考以下说明

    为了避免请求泛滥,给 API 设置速度限制很重要。为此 RFC 6585 引入了 HTTP 状态码429(too many requests)。加入速度设置之后,应该提示用户,至于如何提示标准上没有说明,不过流行的方法是使用 HTTP 的返回头。 下面是几个必须的返回头(依照 twitter 的命名规则):

    • X-Rate-Limit-Limit : 当前时间段允许的并发请求数
    • X-Rate-Limit-Remaining: 当前时间段保留的请求数。
    • X-Rate-Limit-Reset: 当前时间段剩余秒数

    为什么使用当前时间段剩余秒数而不是时间戳?

    时间戳保存的信息很多,但是也包含了很多不必要的信息,用户只需要知道还剩几秒就可以再发请求了这样也避免了clock skew问题。

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    再补一个,像 api 根目录发请求可以返回类似下面的文档

    {
      "link": {
    	"rel":   "collection https://www.example.com/comments",
    	"href":  "https://api.example.com/comments",
    	"title": "List of comments",
    	"type":  "application/vnd.yourformat+json"
      }
    }
    
    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    0e060c04352a4a4092e3fab5bab6b873-image.png

    这几个怕是要提供一下。还有消息推送哟。

    感谢    赞同 1    反对    举报    分享       评论    回复
  • Vanessa      
    感谢    赞同    反对    举报    分享       评论    回复
  • ZephyrJung      

    加油,等你们写好了我直接用。。。

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    我的回帖中标题 emoji 输出为 img , 请直接输出 emoji 字符既可

    感谢    赞同    反对    举报    分享       评论    回复
  • mainlove      

    社区客户端 啥时候完成

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa            

    现在有的接口功能都写完了

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    • 文章详情页面评论需要下拉刷新,重新给一个接口
    • 文章详情页面返回 html

    感谢    赞同 1    反对    举报    分享       评论    回复
  • Vanessa      

    580291f2bb2347329ded10efb47b3bac-image.png

    这个获取文章列表返回的缩略图太渣了

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    我错了,文章详细还是返回 markdown 吧。要不编辑的时候是 html 呀

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa            

    还差删除帖子、评论的接口。文章评论的排序需要可以正序

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa            

    还差我的链接熔炉和我的积分

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    我收到的回帖

    {
      authorName,
      authorAvatarURL,
      title,
      content(html),
      dataId
    }
    
    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    还差一个:新增关注着消息未读数清零的接口

    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa      

    还要一个 at 用户搜索的用来做 at 功能的接口
    还有获取 tag 搜索的用来发文时填写 tag

    感谢    赞同    反对    举报    分享       评论    回复
  • mainlove      

    鉴权只能通过 cookie 吗?

    那如果是 APP 端 或者是 PC client 应用怎么搞呢?

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    HTTP 头里面加 token 也行。

    2 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • mainlove            

    文档里没写吧。。。。。。。。

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    因为我不记得我是否实现了….

    感谢    赞同    反对    举报    分享       评论    回复
  • xjf1128   1 感谢            

    嗯,App 端也是写在 header 里的:Cookie: b3log-latke=……(token) 。。。(顺便提个 bug,10.12.6 的 Mac os,最新的 chrome,回复评论时浏览器会崩溃 😂)

    2 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • 88250            

    谢谢反馈 @Vanessa

    1 回复 
    感谢    赞同    反对    举报    分享       评论    回复
  • Vanessa            

    我的也经常蹦呀。 写评论之前打个空格就好了。

    我不知道怎么修。。。。

    感谢    赞同    反对    举报    分享       评论    回复
请输入回帖内容...