Appearance
论坛板块查询接口
用于查询论坛应用下的板块列表数据,支持GET和POST两种请求方式。通过appid(应用ID)和signature(应用签名)验证请求合法性,接口会自动校验应用状态、开发者权限等信息,最终返回符合条件的板块详情。
注意
- 板块为论坛的核心分类单元,需先在后台完成板块创建与配置;
- 接口仅返回当前应用下的板块数据,不同应用的板块数据相互隔离;
- 若开发者账号或应用状态异常,将无法获取板块数据。
请求地址 GET / POST
http
https://nobase.cn/api/bbs/plate请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用ID,从开发者中心获取的应用唯一标识 |
| signature | query | string | ✅ 是 | 应用签名,与后台配置一致,用于验证请求合法性 |
返回示例
成功响应(存在板块数据)
json
{
"code": 200,
"msg": "success",
"data": [
{
"uid": "1001",
"icon": "https://example.com/icons/tech.png",
"title": "技术讨论区",
"content": "分享技术经验与问题解答",
"other": "每周三更新精选内容",
"moderator": "tech_admin",
"examine": "1",
"comment": "1",
"exampost": "0",
"commentpost": "1",
"create_time": "2025-03-10 09:30:00",
"up_time": "2025-03-15 16:45:00"
},
{
"uid": "1002",
"icon": "https://example.com/icons/feedback.png",
"title": "意见反馈区",
"content": "收集产品建议与使用反馈",
"other": "",
"moderator": "feedback_admin",
"examine": "1",
"comment": "1",
"exampost": "1",
"commentpost": "1",
"create_time": "2025-03-12 11:20:00",
"up_time": "2025-03-12 11:20:00"
}
]
}成功响应(无板块数据)
json
{
"code": 404,
"msg": "fail",
"data": "暂无板块"
}失败响应(参数缺失)
json
{
"code": 204,
"msg": "fail",
"data": "接口参数错误:缺少signature"
}失败响应(签名校验失败)
json
{
"code": 402,
"msg": "fail",
"data": "用户访问被限制:签名校验失败!"
}失败响应(应用/开发者状态异常)
json
{
"code": 404,
"msg": "fail",
"data": "应用审核中!"
}失败响应(应用配置缺失)
json
{
"code": 407,
"msg": "fail",
"data": "应用配置不存在!"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=查询成功;204=参数缺失/错误;402=签名失败;404=无板块数据/应用/开发者状态异常;407=应用配置缺失 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | array/string | 响应数据:成功时为板块列表数组(含板块详情);失败时为错误提示文本 |
代码示例
javascript
// 配置参数
const appid = "your_app_id";
const signature = "your_signature";
// 构造请求参数
const params = new URLSearchParams({
appid,
signature
});
// 发起POST请求
fetch("https://nobase.cn/api/bbs/plate", {
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);
// 渲染板块列表(示例)
// res.data.forEach(plate => renderPlate(plate));
} else {
console.error("加载失败:", res.data);
}
})
.catch(err => console.error("请求出错:", err));javascript
// 配置参数
const appid = "your_app_id";
const signature = "your_signature";
// 拼接请求地址
const url = new URL("https://nobase.cn/api/bbs/plate");
url.searchParams.set("appid", appid);
url.searchParams.set("signature", signature);
// 发起GET请求
fetch(url.toString())
.then(res => res.json())
.then(res => {
if (res.code === 200) {
console.log("板块列表:", res.data);
} else {
console.error("获取失败:", res.data);
}
})
.catch(err => console.error("请求异常:", err));python
import requests
# 配置参数
params = {
"appid": "your_app_id",
"signature": "your_signature"
}
# 发起POST请求
response = requests.post(
"https://nobase.cn/api/bbs/plate",
data=params,
timeout=8
)
res_data = response.json()
if res_data["code"] == 200:
print("板块数据:", res_data["data"])
else:
print("错误信息:", res_data["data"])python
import requests
# 配置参数
params = {
"appid": "your_app_id",
"signature": "your_signature"
}
# 发起GET请求
response = requests.get(
"https://nobase.cn/api/bbs/plate",
params=params,
timeout=8
)
res_data = response.json()
if res_data["code"] == 200:
print("板块列表:", res_data["data"])
else:
print("获取失败:", res_data["data"])注意事项
参数要求
appid和signature为必填项,缺失任一参数会返回“接口参数错误:缺少xxx”;signature需与应用在开发者中心的配置完全一致,建议通过后端生成并传递,避免前端明文暴露。
校验逻辑说明
接口会自动验证以下条件,不符合时返回对应错误:- 应用合法性:应用不存在返回“应用不存在!”,应用与开发者不匹配返回“应用与开发者不匹配!”;
- 状态有效性:开发者账号状态异常(非启用)、应用停用(返回停用原因)或审核中(返回“应用审核中!”)会拒绝请求;
- 权限有效性:开发者VIP逾期会返回“已逾期(X年/X月/X天),请缴费后重试!”,需完成续费才能使用。
数据使用说明
- 板块数据中的
uid为唯一标识,可用于后续查询板块下的帖子等操作; examine、comment等字段用于标识板块功能状态(如是否需要审核、是否允许评论),具体含义可参考开发者中心文档;- 若返回空列表或“暂无板块”,需先在后台创建板块并关联当前应用。
- 板块数据中的
安全建议
- 生产环境优先使用POST请求,减少参数在URL中的暴露风险;
- 定期更新
signature并同步至接口调用端,防止签名泄露导致的非法请求; - 对返回的敏感数据(如管理员信息),前端需根据业务需求选择性展示。

