Skip to content

用户帖子列表接口

用于查询指定用户发布的帖子列表,支持分页获取,需通过动态身份验证(令牌启用时验证token令牌未启用时验证user+pass),仅返回已发布或通过审核的帖子。

请求地址 GET / POST

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

请求参数

参数名位置类型必选说明
appidquerystring✅ 是应用唯一标识,从开发者中心获取
userquerystring✅ 是用户名,需查询帖子的用户账号
signaturequerystring✅ 是应用签名,与后台配置一致,用于验证请求合法性
pagequeryint❌ 否页码,默认值为1
limitqueryint❌ 否每页条数,默认值为10
tokenquerystring条件必选用户令牌,仅令牌启用(apptoken=1) 时需传递,需与用户名绑定
passquerystring条件必选用户密码,仅令牌未启用(apptoken=2) 时需传递

返回示例

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

json
{
  "code": 200,
  "msg": "success",
  "data": [
    {
      "id": "1001",
      "uid": "tech板块ID",
      "username": "dev_user",
      "icon": "https://example.com/icons/user1.png",
      "nickname": "开发者小李",
      "title": "PHP接口开发技巧",
      "content": "分享几个PHP接口安全校验的实用技巧...",
      "post_like": "28",
      "post_see": "356",
      "comment": "12",
      "label": "PHP,接口开发",
      "classification": "技术分享",
      "other": "附加信息",
      "release_time": "2023-09-15 09:30:00",
      "up_time": "2023-09-15 10:15:00"
    },
    {
      "id": "987",
      "uid": "tools板块ID",
      "username": "dev_user",
      "icon": "https://example.com/icons/user1.png",
      "nickname": "开发者小李",
      "title": "常用接口调试工具推荐",
      "content": "整理了几款高效的接口调试工具,适合前后端开发...",
      "post_like": "42",
      "post_see": "512",
      "comment": "8",
      "label": "工具,调试",
      "classification": "资源分享",
      "other": "",
      "release_time": "2023-09-10 14:20:00",
      "up_time": "2023-09-10 14:20:00"
    }
  ]
}

失败响应(无数据)

json
{
  "code": 404,
  "msg": "fail",
  "data": "暂无帖子数据"
}

失败响应(参数/验证异常)

json
{
  "code": 204,
  "msg": "fail",
  "data": "接口参数错误:缺少token"
}
json
{
  "code": 401,
  "msg": "fail",
  "data": "token无效或已过期"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "用户账号未注册!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "开发者账号已逾期(15天),请缴费之后重试!"
}

返回数据结构

参数名类型说明
codenumber状态码:200=获取成功;204=参数缺失/错误;400=apptoken配置无效;401=身份验证失败(token无效/密码错误);402=签名失败;404=资源不存在/状态异常(如用户未注册、无帖子数据)
msgstring状态描述:success=成功,fail=失败
dataarray帖子列表数据(空数组或无数据时返回"暂无帖子数据"),每条数据结构如下:
data[].idstring帖子ID
data[].uidstring帖子所属板块ID
data[].usernamestring发帖用户账号
data[].iconstring发帖用户头像URL
data[].nicknamestring发帖用户昵称
data[].titlestring帖子标题
data[].contentstring帖子内容
data[].post_likestring帖子点赞数
data[].post_seestring帖子浏览量
data[].commentstring帖子评论数
data[].labelstring帖子标签(多个标签用逗号分隔)
data[].classificationstring帖子分类
data[].otherstring帖子附加信息
data[].release_timestring帖子发布时间(格式:Y-m-d H:i:s)
data[].up_timestring帖子最后更新时间(格式:Y-m-d H:i:s)

代码示例

javascript
// 令牌启用时查询用户帖子列表
const params = new URLSearchParams({
  appid: "your_app_id",
  user: "目标用户名",
  page: 1, // 可选,默认1
  limit: 15, // 可选,默认10
  token: "valid_user_token", // 与用户名绑定的有效令牌
  signature: "your_signature"
});

fetch("https://nobase.cn/api/bbs/user_posts", {
  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);
    // 渲染帖子列表、分页控件等
  } else {
    console.error("获取失败:", res.data);
  }
});
javascript
// 令牌未启用时查询用户帖子列表
const url = new URL("https://nobase.cn/api/bbs/user_posts");
url.searchParams.set("appid", "your_app_id");
url.searchParams.set("user", "目标用户名");
url.searchParams.set("page", 2);
url.searchParams.set("limit", 10);
url.searchParams.set("pass", "用户密码");
url.searchParams.set("signature", "your_signature");

fetch(url.toString())
.then(res => res.json())
.then(res => {
  res.code === 200 
    ? console.log("用户帖子列表:", res.data)
    : console.error("错误:", res.data);
});
python
import requests

# 令牌启用时查询用户帖子列表
params = {
    "appid": "your_app_id",
    "user": "目标用户名",
    "page": 1,
    "limit": 20,
    "token": "valid_user_token",
    "signature": "your_signature"
}

response = requests.post(
    "https://nobase.cn/api/bbs/user_posts",
    data=params,
    timeout=8
)
res_data = response.json()
print("用户帖子列表:", res_data["data"])

核心逻辑说明

1. 身份验证模式

模式(apptoken)验证流程关键限制
1(令牌启用)1. 校验token存在性;
2. 调用check_user_token验证tokenuser绑定关系;
3. 验证通过则允许查询。
token无效/过期/与用户名不匹配,返回401错误。
2(令牌未启用)1. 校验pass存在性;
2. 验证pass的MD5加密值与数据库存储的密码一致;
3. 验证通过则允许查询。
密码错误返回401,pass缺失返回204。

2. 业务校验规则

  • 资源存在性
    - 应用(appid)、用户(user)、应用配置、用户配置必须存在,否则返回对应“不存在”错误;
    - 开发者账号、用户账号需正常启用(状态为“正常”),否则返回“状态异常”;
  • 应用状态
    - 应用不可处于“停用”(Appstate=2)或“审核中”(Appstate=3),否则返回对应提示;
  • VIP校验:开发者VIP未逾期,否则返回逾期提示(如“已逾期(15天),请缴费之后重试!”);
  • 账号长度:查询的用户名长度需在配置范围内(user_shortest-user_longest),否则返回长度校验失败。

3. 分页查询逻辑

  • 分页参数
    - page:页码,默认1(第一页);
    - limit:每页条数,默认10;
    - 计算逻辑:起始位置=(page-1)× limit,查询条数=limit;
  • 数据筛选:仅查询状态为“已发布”或“通过审核”的帖子(state IN (1,4)),确保返回内容为公开可见的有效帖子;
  • 排序规则:按帖子ID升序排列(ORDER BY id ASC),即旧帖在前、新帖在后;
  • 总记录数:先查询符合条件的帖子总数,用于前端计算分页控件(如总页数、是否有下一页)。

4. 返回数据说明

返回的帖子列表包含以下核心信息:
- 基础信息:帖子ID、所属板块、标题、内容、发布/更新时间;
- 用户信息:发帖用户的账号、头像、昵称;
- 互动数据:点赞数、浏览量、评论数;
- 分类标签:帖子标签、分类、附加信息。

注意事项

  1. 参数规范

    • user需为已注册的有效用户名,否则返回“用户账号未注册!”;
    • 分页参数pagelimit需为正整数,若传递非数值类型,接口可能按默认值处理(1和10);
    • 签名校验需包含动态获取的developer参数(接口内部自动合并),否则返回“用户访问被限制”(402错误)。
  2. 数据范围

    • 接口仅返回状态为1(已发布)或4(通过审核)的帖子,审核中(3)、审核失败(2)的帖子不会被返回;
    • 若用户未发布任何有效帖子,返回“暂无帖子数据”(404状态)。
  3. 性能建议

    • 如需获取大量数据,建议分页查询(如limit=50),避免单次请求数据量过大导致超时;
    • 前端可缓存首次查询结果,后续通过下拉加载更多(递增page)获取后续数据。
  4. 安全说明

    • 令牌未启用时,pass以明文传递,生产环境必须使用HTTPS协议;
    • 建议仅允许用户查询自己的帖子列表(通过身份验证与user参数匹配实现),如需查询他人帖子,需额外扩展权限控制逻辑。
  5. 字段应用

    • post_likepost_seecomment可用于展示帖子的热度数据;
    • labelclassification可用于前端筛选或分类展示用户发布的帖子。