Skip to content

论坛帖子列表接口

用于获取指定板块或全部板块的帖子列表,支持分页查询、多种排序方式,包含签名验证及应用、开发者状态校验机制。

请求地址 GET / POST

http
https://nobase.cn/api/bbs/postlist

请求参数

参数名位置类型必选说明
appidquerystring✅ 是应用唯一标识,从开发者中心获取
uidquerystring❌ 否板块ID,指定板块获取帖子,不填则返回全部板块帖子
pagequeryint❌ 否页码,默认1(第一页)
limitqueryint❌ 否每页条数,默认10条
signaturequerystring✅ 是应用签名,与后台配置一致,用于验证请求合法性
outtypequerystring❌ 否排序方式,默认default;可选值:flow(正序)、desc(倒序)、like(按点赞数降序)、see(按浏览量降序)、comment(按评论数降序)

返回示例

成功响应(获取帖子列表)

json
{
  "code": 200,
  "msg": "success",
  "data": {
    "list": [
      {
        "id": "1001",
        "username": "user123",
        "icon": "https://example.com/avatar/user123.png",
        "nickname": "技术爱好者",
        "title": "Python基础教程分享",
        "content": "这是一篇关于Python入门的基础教程...",
        "post_like": 25,
        "post_see": 320,
        "comment": 8,
        "label": "Python,教程",
        "classification": "技术",
        "other": "附加信息",
        "release_time": "2025-10-19 15:30:00",
        "up_time": "2025-10-19 16:45:00"
      },
      // 更多帖子...
    ],
    "pagination": {
      "total": 128,
      "page": 1,
      "limit": 10,
      "totalPage": 13
    }
  }
}

失败响应(参数问题)

json
{
  "code": 204,
  "msg": "fail",
  "data": "接口参数错误:缺少appid"
}
json
{
  "code": 204,
  "msg": "fail",
  "data": "接口参数错误:缺少signature"
}

失败响应(签名/权限异常)

json
{
  "code": 402,
  "msg": "fail",
  "data": "用户访问被限制:签名校验失败!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "应用与开发者不匹配!"
}

失败响应(资源/状态异常)

json
{
  "code": 404,
  "msg": "fail",
  "data": "应用不存在!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "开发者账号状态异常!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "应用审核中!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "开发者账号已逾期(3天),请缴费后重试!"
}
json
{
  "code": 407,
  "msg": "fail",
  "data": "该板块不存在!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "暂无帖子数据"
}

返回数据结构

参数名类型说明
codenumber状态码:200=获取成功;204=参数缺失/错误;402=签名失败;404=资源不存在/状态异常(如应用不存在、开发者状态异常、暂无数据);407=板块不存在/应用配置不存在
msgstring状态描述:success=成功,fail=失败
dataobject/string响应数据:成功时为包含list(帖子列表)和pagination(分页信息)的对象;失败时为错误原因字符串

data.list 字段说明

字段名类型说明
idstring帖子唯一标识
usernamestring发帖用户账号
iconstring用户头像URL,默认使用系统默认头像
nicknamestring用户昵称
titlestring帖子标题
contentstring帖子内容
post_likenumber帖子点赞数
post_seenumber帖子浏览量
commentnumber帖子评论数
labelstring帖子标签,多标签用逗号分隔
classificationstring帖子分类
otherstring附加信息
release_timestring发布时间(格式:YYYY-MM-DD HH:MM:SS)
up_timestring最后更新时间(格式:YYYY-MM-DD HH:MM:SS)

data.pagination 字段说明

字段名类型说明
totalnumber符合条件的帖子总条数
pagenumber当前页码
limitnumber每页条数
totalPagenumber总页数(ceil(total/limit))

代码示例

javascript
// 获取帖子列表(指定板块,按点赞数排序)
const params = new URLSearchParams({
  appid: "your_app_id",
  uid: "目标板块ID", // 可选,不填则查全部
  page: 1,
  limit: 15,
  outtype: "like", // 按点赞数降序
  signature: "your_signature"
});

fetch("https://nobase.cn/api/bbs/postlist", {
  method: "POST",
  body: params,
  headers: { "Content-Type": "application/x-www-form-urlencoded" }
})
.then(res => res.json())
.then(res => {
  if (res.code === 200) {
    console.log("帖子列表:", res.data.list);
    console.log("分页信息:", res.data.pagination);
  } else {
    console.error("获取失败:", res.data);
  }
});
python
import requests

# 获取帖子列表(全部板块,默认排序)
params = {
    "appid": "your_app_id",
    "page": 2,
    "limit": 10,
    "outtype": "default",
    "signature": "your_signature"
}

response = requests.get(
    "https://nobase.cn/api/bbs/postlist",
    params=params,
    timeout=8
)
res_data = response.json()
if res_data["code"] == 200:
    print("总条数:", res_data["data"]["pagination"]["total"])
    print("当前页帖子:", res_data["data"]["list"])
else:
    print("错误信息:", res_data["data"])

核心逻辑说明

1. 验证流程

  1. 参数校验:检查appidsignature是否存在,缺失则返回204错误;
  2. 应用有效性校验:通过appid查询应用信息,不存在则返回404;
  3. 开发者关联校验:验证应用所属开发者账号的存在性及匹配性,不匹配则返回404;
  4. 签名校验:结合应用信息和开发者标识验证signature合法性,失败则返回402;
  5. 状态校验
    • 开发者账号状态需为“正常”(state=1),否则返回“状态异常”;
    • 应用状态不可为“停用”或“审核中”,否则返回对应提示;
    • 开发者VIP未逾期,否则返回逾期提示(如“已逾期(3天)”)。

2. 业务查询规则

  • 板块筛选
    • 若传递uid,则仅返回该板块下的帖子(需验证板块存在性,不存在返回407);
    • 若不传递uid,则返回当前应用下所有板块的帖子;
  • 帖子状态:仅返回状态为“正常”(state=1)或“直接发布”(state=4)的帖子;
  • 分页处理:通过pagelimit计算起始位置((page-1)*limit),支持自定义每页条数;
  • 排序逻辑:根据outtype参数决定排序方式(默认按ID正序),支持按点赞数、浏览量、评论数等维度排序。

3. 数据返回逻辑

  • 成功查询时,返回包含list(帖子详情列表)和pagination(分页信息)的对象;
  • 帖子列表关联用户表获取头像信息,若用户未设置头像则使用系统默认头像;
  • 无符合条件的帖子时,返回“暂无帖子数据”(404状态)。

注意事项

  1. 参数规范

    • outtype参数仅支持指定值(default/flow/desc/like/see/comment),传入其他值将按默认排序处理;
    • pagelimit需为正整数,否则自动使用默认值(page=1,limit=10)。
  2. 签名验证

    • 签名计算需包含所有请求参数及动态获取的developer(应用所属开发者标识),确保与后台校验逻辑一致;
    • 签名错误将被拒绝访问(402状态),需检查签名生成规则及参数完整性。
  3. 数据权限

    • 接口仅返回当前应用及所属开发者下的帖子数据,无法跨应用/跨开发者查询;
    • 板块筛选时,uid需属于当前应用,否则返回“该板块不存在”(407状态)。
  4. 性能建议

    • 大量数据查询时,建议合理设置limit值(建议不超过50),避免单次请求数据量过大;
    • 前端可根据pagination信息实现分页控件,支持用户切换页码和每页条数。
  5. 字段说明

    • other字段为扩展字段,内容格式由业务方自定义(如存储附件ID、地理位置等);
    • 时间字段(release_time/up_time)均为服务器时间,格式统一为YYYY-MM-DD HH:MM:SS