Appearance
论坛帖子列表接口
用于获取指定板块或全部板块的帖子列表,支持分页查询、多种排序方式,包含签名验证及应用、开发者状态校验机制。
请求地址 GET / POST
http
https://nobase.cn/api/bbs/postlist请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用唯一标识,从开发者中心获取 |
| uid | query | string | ❌ 否 | 板块ID,指定板块获取帖子,不填则返回全部板块帖子 |
| page | query | int | ❌ 否 | 页码,默认1(第一页) |
| limit | query | int | ❌ 否 | 每页条数,默认10条 |
| signature | query | string | ✅ 是 | 应用签名,与后台配置一致,用于验证请求合法性 |
| outtype | query | string | ❌ 否 | 排序方式,默认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": "暂无帖子数据"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=获取成功;204=参数缺失/错误;402=签名失败;404=资源不存在/状态异常(如应用不存在、开发者状态异常、暂无数据);407=板块不存在/应用配置不存在 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | object/string | 响应数据:成功时为包含list(帖子列表)和pagination(分页信息)的对象;失败时为错误原因字符串 |
data.list 字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | string | 帖子唯一标识 |
| username | string | 发帖用户账号 |
| icon | string | 用户头像URL,默认使用系统默认头像 |
| nickname | string | 用户昵称 |
| title | string | 帖子标题 |
| content | string | 帖子内容 |
| post_like | number | 帖子点赞数 |
| post_see | number | 帖子浏览量 |
| comment | number | 帖子评论数 |
| label | string | 帖子标签,多标签用逗号分隔 |
| classification | string | 帖子分类 |
| other | string | 附加信息 |
| release_time | string | 发布时间(格式:YYYY-MM-DD HH:MM:SS) |
| up_time | string | 最后更新时间(格式:YYYY-MM-DD HH:MM:SS) |
data.pagination 字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| total | number | 符合条件的帖子总条数 |
| page | number | 当前页码 |
| limit | number | 每页条数 |
| totalPage | number | 总页数(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. 验证流程
- 参数校验:检查
appid和signature是否存在,缺失则返回204错误; - 应用有效性校验:通过
appid查询应用信息,不存在则返回404; - 开发者关联校验:验证应用所属开发者账号的存在性及匹配性,不匹配则返回404;
- 签名校验:结合应用信息和开发者标识验证
signature合法性,失败则返回402; - 状态校验:
- 开发者账号状态需为“正常”(
state=1),否则返回“状态异常”; - 应用状态不可为“停用”或“审核中”,否则返回对应提示;
- 开发者VIP未逾期,否则返回逾期提示(如“已逾期(3天)”)。
- 开发者账号状态需为“正常”(
2. 业务查询规则
- 板块筛选:
- 若传递
uid,则仅返回该板块下的帖子(需验证板块存在性,不存在返回407); - 若不传递
uid,则返回当前应用下所有板块的帖子;
- 若传递
- 帖子状态:仅返回状态为“正常”(
state=1)或“直接发布”(state=4)的帖子; - 分页处理:通过
page和limit计算起始位置((page-1)*limit),支持自定义每页条数; - 排序逻辑:根据
outtype参数决定排序方式(默认按ID正序),支持按点赞数、浏览量、评论数等维度排序。
3. 数据返回逻辑
- 成功查询时,返回包含
list(帖子详情列表)和pagination(分页信息)的对象; - 帖子列表关联用户表获取头像信息,若用户未设置头像则使用系统默认头像;
- 无符合条件的帖子时,返回“暂无帖子数据”(404状态)。
注意事项
参数规范
outtype参数仅支持指定值(default/flow/desc/like/see/comment),传入其他值将按默认排序处理;page和limit需为正整数,否则自动使用默认值(page=1,limit=10)。
签名验证
- 签名计算需包含所有请求参数及动态获取的
developer(应用所属开发者标识),确保与后台校验逻辑一致; - 签名错误将被拒绝访问(402状态),需检查签名生成规则及参数完整性。
- 签名计算需包含所有请求参数及动态获取的
数据权限
- 接口仅返回当前应用及所属开发者下的帖子数据,无法跨应用/跨开发者查询;
- 板块筛选时,
uid需属于当前应用,否则返回“该板块不存在”(407状态)。
性能建议
- 大量数据查询时,建议合理设置
limit值(建议不超过50),避免单次请求数据量过大; - 前端可根据
pagination信息实现分页控件,支持用户切换页码和每页条数。
- 大量数据查询时,建议合理设置
字段说明
other字段为扩展字段,内容格式由业务方自定义(如存储附件ID、地理位置等);- 时间字段(
release_time/up_time)均为服务器时间,格式统一为YYYY-MM-DD HH:MM:SS。

