Appearance
论坛板块详情接口
用于获取指定板块的详细信息(包括基本配置、权限设置、时间信息等),需通过应用合法性校验及签名验证,无需用户身份验证(仅验证应用和开发者权限)。
请求地址 GET / POST
http
https://nobase.cn/api/bbs/plate_detail请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用唯一标识,从开发者中心获取 |
| uid | query | string | ✅ 是 | 板块ID,需查询的目标板块唯一标识 |
| signature | query | string | ✅ 是 | 应用签名,与后台配置一致,用于验证请求合法性 |
返回示例
成功响应(获取板块详情)
json
{
"code": 200,
"msg": "success",
"data": {
"icon": "https://example.com/icons/plate1.png",
"title": "技术交流区",
"content": "用于分享和讨论各类技术问题",
"other": "板块附加说明信息",
"moderator": "#Y:admin#Y:tech_mod",
"examine": "1",
"comment": "1",
"exampost": "1",
"commentpost": "1",
"create_time": "2023-01-15 10:30:00",
"up_time": "2023-06-20 14:20:00"
}
}失败响应(参数/资源异常)
json
{
"code": 204,
"msg": "fail",
"data": "接口参数错误"
}json
{
"code": 407,
"msg": "fail",
"data": "该板块不存在!"
}json
{
"code": 404,
"msg": "fail",
"data": "应用审核中!"
}json
{
"code": 404,
"msg": "fail",
"data": "开发者账号已逾期(2天),请缴费之后重试!"
}json
{
"code": 402,
"msg": "fail",
"data": "用户访问被限制:签名校验失败!"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=获取成功;204=参数缺失/错误;402=签名失败;404=资源不存在/状态异常(如应用审核中、开发者VIP逾期);407=板块/应用配置不存在 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | object | 板块详情数据,结构如下: |
| data.icon | string | 板块图标URL |
| data.title | string | 板块名称 |
| data.content | string | 板块描述(介绍信息) |
| data.other | string | 板块附加信息(扩展说明) |
| data.moderator | string | 版主列表,格式为#Y:用户名1#Y:用户名2(用于标识板块管理员) |
| data.examine | string | 帖子审核设置:1=发帖需审核,0=发帖无需审核 |
| data.comment | string | 评论审核设置:1=评论需审核,0=评论无需审核 |
| data.exampost | string | 发帖权限:1=允许发帖,0=禁止发帖 |
| data.commentpost | string | 评论权限:1=允许评论,0=禁止评论 |
| data.create_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",
uid: "目标板块ID",
signature: "your_signature"
});
fetch("https://nobase.cn/api/bbs/plate_detail", {
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);
}
});python
import requests
# 获取板块详情
params = {
"appid": "your_app_id",
"uid": "目标板块ID",
"signature": "your_signature"
}
response = requests.post(
"https://nobase.cn/api/bbs/plate_detail",
data=params,
timeout=8
)
res_data = response.json()
print("板块详情:", res_data["data"])核心逻辑说明
1. 校验流程
- 参数校验:检查
appid、uid、signature是否存在,缺失则返回204错误; - 应用合法性:通过
appid查询ye_app表,验证应用是否存在及开发者标识(Appuser)是否有效; - 开发者校验:通过开发者标识查询
ye_user表,验证开发者账号是否注册及状态是否正常(state=1); - 应用配置校验:查询
ye_appconfig表,验证应用配置是否存在; - 板块存在性:通过
developer(开发者)、appid、uid查询ye_plate表,验证板块是否存在; - 状态校验:检查应用是否处于“停用”(
Appstate=2)或“审核中”(Appstate=3),开发者VIP是否逾期; - 签名校验:合并请求参数与动态获取的
developer,验证签名合法性,失败返回402错误。
2. 数据返回
校验通过后,从ye_plate表提取板块详情,包括:
- 基础信息:图标(
icon)、名称(title)、描述(content)、附加信息(other); - 权限配置:版主列表(
moderator)、发帖/评论的审核要求(examine/comment)、发帖/评论权限(exampost/commentpost); - 时间信息:创建时间(
create_time)、最后更新时间(up_time)。
数据通过appkey加密后返回(依赖json_data_encryption方法)。
注意事项
参数规范
uid需为目标板块的唯一标识,且必须属于appid对应的应用,否则返回“该板块不存在!”;signature需与应用后台配置一致,签名计算需包含动态获取的developer参数(接口内部自动合并),否则会触发“签名校验失败”。
权限应用
- 前端可根据返回的
exampost判断是否显示“发帖按钮”(1=显示,0=隐藏/禁用); - 根据
commentpost控制“评论功能”是否可用,根据examine和comment预判内容发布后是否需要审核(如显示“发布后需审核”提示)。
- 前端可根据返回的
版主识别
moderator字段格式为#Y:用户名1#Y:用户名2,前端可通过split('#Y:')解析版主列表,用于在评论/帖子管理中标识版主身份。
时效性
up_time反映板块配置的最后更新时间,可用于提示用户“板块规则已更新”;- 若需实时性更高的信息(如当前在线人数),需结合其他接口扩展。
安全建议
- 接口返回的板块配置(如审核规则)需在前端明确展示(如发帖页提示“本板块发帖需审核”),提升用户体验;
- 生产环境需使用HTTPS协议,防止数据传输过程中被篡改。

