Appearance
用户帖子列表接口
用于查询指定用户发布的帖子列表,支持分页获取,需通过动态身份验证(令牌启用时验证token,令牌未启用时验证user+pass),仅返回已发布或通过审核的帖子。
请求地址 GET / POST
http
https://nobase.cn/api/bbs/user_posts请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用唯一标识,从开发者中心获取 |
| user | query | string | ✅ 是 | 用户名,需查询帖子的用户账号 |
| signature | query | string | ✅ 是 | 应用签名,与后台配置一致,用于验证请求合法性 |
| page | query | int | ❌ 否 | 页码,默认值为1 |
| limit | query | int | ❌ 否 | 每页条数,默认值为10 |
| token | query | string | 条件必选 | 用户令牌,仅令牌启用(apptoken=1) 时需传递,需与用户名绑定 |
| pass | query | string | 条件必选 | 用户密码,仅令牌未启用(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天),请缴费之后重试!"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=获取成功;204=参数缺失/错误;400=apptoken配置无效;401=身份验证失败(token无效/密码错误);402=签名失败;404=资源不存在/状态异常(如用户未注册、无帖子数据) |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | array | 帖子列表数据(空数组或无数据时返回"暂无帖子数据"),每条数据结构如下: |
| data[].id | string | 帖子ID |
| data[].uid | string | 帖子所属板块ID |
| data[].username | string | 发帖用户账号 |
| data[].icon | string | 发帖用户头像URL |
| data[].nickname | string | 发帖用户昵称 |
| data[].title | string | 帖子标题 |
| data[].content | string | 帖子内容 |
| data[].post_like | string | 帖子点赞数 |
| data[].post_see | string | 帖子浏览量 |
| data[].comment | string | 帖子评论数 |
| data[].label | string | 帖子标签(多个标签用逗号分隔) |
| data[].classification | string | 帖子分类 |
| data[].other | string | 帖子附加信息 |
| data[].release_time | string | 帖子发布时间(格式:Y-m-d H:i:s) |
| data[].up_time | string | 帖子最后更新时间(格式: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验证token与user绑定关系;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、所属板块、标题、内容、发布/更新时间;
- 用户信息:发帖用户的账号、头像、昵称;
- 互动数据:点赞数、浏览量、评论数;
- 分类标签:帖子标签、分类、附加信息。
注意事项
参数规范
user需为已注册的有效用户名,否则返回“用户账号未注册!”;- 分页参数
page和limit需为正整数,若传递非数值类型,接口可能按默认值处理(1和10); - 签名校验需包含动态获取的
developer参数(接口内部自动合并),否则返回“用户访问被限制”(402错误)。
数据范围
- 接口仅返回状态为
1(已发布)或4(通过审核)的帖子,审核中(3)、审核失败(2)的帖子不会被返回; - 若用户未发布任何有效帖子,返回“暂无帖子数据”(404状态)。
- 接口仅返回状态为
性能建议
- 如需获取大量数据,建议分页查询(如
limit=50),避免单次请求数据量过大导致超时; - 前端可缓存首次查询结果,后续通过下拉加载更多(递增
page)获取后续数据。
- 如需获取大量数据,建议分页查询(如
安全说明
- 令牌未启用时,
pass以明文传递,生产环境必须使用HTTPS协议; - 建议仅允许用户查询自己的帖子列表(通过身份验证与
user参数匹配实现),如需查询他人帖子,需额外扩展权限控制逻辑。
- 令牌未启用时,
字段应用
post_like、post_see、comment可用于展示帖子的热度数据;label和classification可用于前端筛选或分类展示用户发布的帖子。

