CNode API v1 完整接口文档(JSON 规范整理)

基础路径:CNode社区


一、主题相关接口

1. 获取主题列表

  • 接口名称:获取主题首页列表
  • 请求方式:GET
  • URL:/topics
  • 入参

json

复制代码
{
  "page": "Number 页数",
  "tab": "String 分类(ask/share/job/good)",
  "limit": "Number 每页数量",
  "mdrender": "String true/false 是否渲染markdown"
}

2. 获取主题详情

  • 接口名称:获取主题详情
  • 请求方式:GET
  • URL:/topic/:id
  • 入参

json

复制代码
{
  "mdrender": "String true/false",
  "accesstoken": "String 可选,用于判断收藏/点赞状态"
}

3. 新建主题

  • 接口名称:新建主题
  • 请求方式:POST
  • URL:/topics
  • 入参

json

复制代码
{
  "accesstoken": "String 必填",
  "title": "String 必填",
  "tab": "String ask/share/job/dev",
  "content": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "topic_id": "5433d5e4e737cbe96dcef312"
}

4. 编辑主题

  • 接口名称:编辑主题
  • 请求方式:POST
  • URL:/topics/update
  • 入参

json

复制代码
{
  "accesstoken": "String 必填",
  "topic_id": "String 必填",
  "title": "String 必填",
  "tab": "String ask/share/job",
  "content": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "topic_id": "5433d5e4e737cbe96dcef312"
}

二、主题收藏相关

1. 收藏主题

  • 接口名称:收藏主题
  • 请求方式:POST
  • URL:/topic_collect/collect
  • 入参

json

复制代码
{
  "accesstoken": "String 必填",
  "topic_id": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true
}

2. 取消收藏主题

  • 接口名称:取消收藏主题
  • 请求方式:POST
  • URL:/topic_collect/de_collect
  • 入参

json

复制代码
{
  "accesstoken": "String 必填",
  "topic_id": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true
}

3. 获取用户收藏的主题


三、评论相关

1. 新建评论

  • 接口名称:新建评论
  • 请求方式:POST
  • URL:/topic/:topic_id/replies
  • 入参

json

复制代码
{
  "accesstoken": "String 必填",
  "content": "String 必填",
  "reply_id": "String 可选,回复某条评论"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "reply_id": "5433d5e4e737cbe96dcef312"
}

2. 评论点赞 / 取消点赞

  • 接口名称:评论点赞
  • 请求方式:POST
  • URL:/reply/:reply_id/ups
  • 入参

json

复制代码
{
  "accesstoken": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "action": "down/up"
}

四、用户相关

1. 获取用户详情

  • 接口名称:获取用户详情
  • 请求方式:GET
  • URL:/user/:loginname
  • 入参:无(路径参数用户名)
  • 出参:用户信息、积分、创建主题、回复等
  • 请求示例https://cnodejs.org/api/v1/user/alsotang

2. 验证 accessToken

  • 接口名称:验证 accessToken
  • 请求方式:POST
  • URL:/accesstoken
  • 入参

json

复制代码
{
  "accesstoken": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "loginname": "用户名",
  "id": "用户ID",
  "avatar_url": "头像地址"
}
  • 失败:返回 403

五、消息通知相关

1. 获取未读消息数

  • 接口名称:获取未读消息数
  • 请求方式:GET
  • URL:/message/count
  • 入参

json

复制代码
{
  "accesstoken": "String 必填"
}
  • 出参示例

json

复制代码
{
  "data": 3
}

2. 获取所有消息

  • 接口名称:获取已读 / 未读消息
  • 请求方式:GET
  • URL:/messages
  • 入参

json

复制代码
{
  "accesstoken": "String 必填",
  "mdrender": "String true/false"
}
  • 出参示例

json

复制代码
{
  "data": {
    "has_read_messages": [],
    "hasnot_read_messages": [
      {
        "id": "543fb7abae523bbc80412b26",
        "type": "at",
        "has_read": false,
        "author": {
          "loginname": "alsotang",
          "avatar_url": "https://avatars.githubusercontent.com/u/1147375?v=2"
        },
        "topic": {
          "id": "542d6ecb9ecb3db94b2b3d0f",
          "title": "adfadfadfasdf",
          "last_reply_at": "2014-10-18T07:47:22.563Z"
        },
        "reply": {
          "id": "543fb7abae523bbc80412b24",
          "content": "[@alsotang](/user/alsotang) 哈哈",
          "ups": [],
          "create_at": "2014-10-16T12:18:51.566Z"
        }
      }
    ]
  }
}

3. 标记全部消息已读

  • 接口名称:标记全部已读
  • 请求方式:POST
  • URL:/message/mark_all
  • 入参

json

复制代码
{
  "accesstoken": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "marked_msgs": [{"id":"544ce385aeaeb5931556c6f9"}]
}

4. 标记单个消息已读

  • 接口名称:标记单个已读
  • 请求方式:POST
  • URL:/message/mark_one/:msg_id
  • 入参

json

复制代码
{
  "accesstoken": "String 必填"
}
  • 出参示例

json

复制代码
{
  "success": true,
  "marked_msg_id": "58ec7d39da8344a81eee0c14"
}

通用说明

  1. accessToken:登录 CNode → 设置页面获取
  2. mdrender:默认 true,渲染 markdown;false 则返回原始文本
  3. 所有需要登录的接口必须携带 accesstoken 参数
相关推荐
IKUN家族3 小时前
Spring MVC(一)
java·spring·mvc
石小石Orz5 小时前
我发现了开发者AI产品营收的新方向
前端·虚拟现实
老马识途2.05 小时前
关于跨域问题的总结
java·前端
都叫我大帅哥5 小时前
Java日期时间三十年战争:从Date考古到LocalDateTime革命,以及数据库与前端的那点事儿
java
Muscleheng5 小时前
SpringBoot 集成 DeepSeek 实现 RAG 文档问答
java·spring boot·ai·springai
2501_936415696 小时前
可变参数&综合练习&斗地主游戏
java·windows·游戏
别惊醒渔人7 小时前
Vue3 Diff 优化:最长递增子序列 LIS
前端·javascript·vue.js
颜酱7 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
用户059540174467 小时前
把AI长期记忆测试从手动验证换成pytest,2天揪出11个隐藏Bug
前端·css
极客先躯7 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试