Skip to content

论坛板块详情接口

用于获取指定板块的详细信息(包括基本配置、权限设置、时间信息等),需通过应用合法性校验及签名验证,无需用户身份验证(仅验证应用和开发者权限)。

请求地址 GET / POST

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

请求参数

参数名位置类型必选说明
appidquerystring✅ 是应用唯一标识,从开发者中心获取
uidquerystring✅ 是板块ID,需查询的目标板块唯一标识
signaturequerystring✅ 是应用签名,与后台配置一致,用于验证请求合法性

返回示例

成功响应(获取板块详情)

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": "用户访问被限制:签名校验失败!"
}

返回数据结构

参数名类型说明
codenumber状态码:200=获取成功;204=参数缺失/错误;402=签名失败;404=资源不存在/状态异常(如应用审核中、开发者VIP逾期);407=板块/应用配置不存在
msgstring状态描述:success=成功,fail=失败
dataobject板块详情数据,结构如下:
data.iconstring板块图标URL
data.titlestring板块名称
data.contentstring板块描述(介绍信息)
data.otherstring板块附加信息(扩展说明)
data.moderatorstring版主列表,格式为#Y:用户名1#Y:用户名2(用于标识板块管理员)
data.examinestring帖子审核设置:1=发帖需审核,0=发帖无需审核
data.commentstring评论审核设置:1=评论需审核,0=评论无需审核
data.exampoststring发帖权限:1=允许发帖,0=禁止发帖
data.commentpoststring评论权限:1=允许评论,0=禁止评论
data.create_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",
  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. 校验流程

  1. 参数校验:检查appiduidsignature是否存在,缺失则返回204错误;
  2. 应用合法性:通过appid查询ye_app表,验证应用是否存在及开发者标识(Appuser)是否有效;
  3. 开发者校验:通过开发者标识查询ye_user表,验证开发者账号是否注册及状态是否正常(state=1);
  4. 应用配置校验:查询ye_appconfig表,验证应用配置是否存在;
  5. 板块存在性:通过developer(开发者)、appiduid查询ye_plate表,验证板块是否存在;
  6. 状态校验:检查应用是否处于“停用”(Appstate=2)或“审核中”(Appstate=3),开发者VIP是否逾期;
  7. 签名校验:合并请求参数与动态获取的developer,验证签名合法性,失败返回402错误。

2. 数据返回

校验通过后,从ye_plate表提取板块详情,包括:

  • 基础信息:图标(icon)、名称(title)、描述(content)、附加信息(other);
  • 权限配置:版主列表(moderator)、发帖/评论的审核要求(examine/comment)、发帖/评论权限(exampost/commentpost);
  • 时间信息:创建时间(create_time)、最后更新时间(up_time)。
    数据通过appkey加密后返回(依赖json_data_encryption方法)。

注意事项

  1. 参数规范

    • uid需为目标板块的唯一标识,且必须属于appid对应的应用,否则返回“该板块不存在!”;
    • signature需与应用后台配置一致,签名计算需包含动态获取的developer参数(接口内部自动合并),否则会触发“签名校验失败”。
  2. 权限应用

    • 前端可根据返回的exampost判断是否显示“发帖按钮”(1=显示,0=隐藏/禁用);
    • 根据commentpost控制“评论功能”是否可用,根据examinecomment预判内容发布后是否需要审核(如显示“发布后需审核”提示)。
  3. 版主识别

    • moderator字段格式为#Y:用户名1#Y:用户名2,前端可通过split('#Y:')解析版主列表,用于在评论/帖子管理中标识版主身份。
  4. 时效性

    • up_time反映板块配置的最后更新时间,可用于提示用户“板块规则已更新”;
    • 若需实时性更高的信息(如当前在线人数),需结合其他接口扩展。
  5. 安全建议

    • 接口返回的板块配置(如审核规则)需在前端明确展示(如发帖页提示“本板块发帖需审核”),提升用户体验;
    • 生产环境需使用HTTPS协议,防止数据传输过程中被篡改。