Skip to content

论坛帖子评论发布接口

用于用户在指定帖子下发布评论,支持动态身份验证(令牌启用时通过token验证,令牌未启用时通过user+pass验证),包含防频繁评论机制,且根据板块配置决定评论是否需要审核,同时自动更新帖子的评论数。

请求地址 GET / POST

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

请求参数

参数名位置类型必选说明
appidquerystring✅ 是应用唯一标识,从开发者中心获取
uidquerystring✅ 是板块ID,帖子所属板块的唯一标识
idquerystring✅ 是帖子ID,需发布评论的目标帖子唯一标识
contentquerystring✅ 是评论内容,不可为空
signaturequerystring✅ 是应用签名,与后台配置一致,用于验证请求合法性
tokenquerystring条件必选用户令牌,仅令牌启用时需传递,需绑定当前应用和开发者
userquerystring条件必选用户账号,仅令牌未启用时需传递
passquerystring条件必选用户密码,仅令牌未启用时需传递

返回示例

成功响应(评论发布成功)

json
{
  "code": 200,
  "msg": "success",
  "data": "评论成功"
}

失败响应(参数问题)

json
{
  "code": 204,
  "msg": "fail",
  "data": "接口参数错误:缺少content"
}
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": "该板块不允许帖子评论"
}
json
{
  "code": 405,
  "msg": "fail",
  "data": "评论频繁:请于20秒后再评论!"
}
json
{
  "code": 405,
  "msg": "fail",
  "data": "账号长度需在6-18字符之间"
}

失败响应(状态/资源异常)

json
{
  "code": 404,
  "msg": "fail",
  "data": "帖子审核中!"
}
json
{
  "code": 404,
  "msg": "fail",
  "data": "开发者账号已逾期(30分钟),请缴费后重试!"
}
json
{
  "code": 407,
  "msg": "fail",
  "data": "该帖子不存在!"
}

返回数据结构

参数名类型说明
codenumber状态码:200=评论成功;204=参数缺失/错误;400=应用配置错误;401=token无效;402=签名失败;404=资源不存在/状态异常(如帖子不存在、账号状态异常);405=权限不足/业务限制(如禁止评论、频繁评论);407=板块/帖子不存在
msgstring状态描述:success=成功,fail=失败
datastring响应数据:操作结果提示或错误原因,如“评论成功”“该板块不允许帖子评论”

代码示例

javascript
// 令牌启用时发布评论
const params = new URLSearchParams({
  appid: "your_app_id",
  uid: "板块ID",
  id: "目标帖子ID",
  content: "这条帖子很有价值,我来补充一点看法...", // 评论内容
  token: "valid_user_token", // 用户有效令牌
  signature: "your_signature"
});

fetch("https://nobase.cn/api/bbs/comment_publish", {
  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/comment_publish");
url.searchParams.set("appid", "your_app_id");
url.searchParams.set("uid", "板块ID");
url.searchParams.set("id", "目标帖子ID");
url.searchParams.set("content", "支持一下,期待更多内容!");
url.searchParams.set("user", "用户账号");
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",
    "uid": "板块ID",
    "id": "帖子ID",
    "content": "学习了,感谢分享!",
    "token": "valid_user_token",
    "signature": "your_signature"
}

response = requests.post(
    "https://nobase.cn/api/bbs/comment_publish",
    data=params,
    timeout=8
)
res_data = response.json()
print("评论结果:", res_data["data"])
python
import requests

# 令牌未启用时发布评论
params = {
    "appid": "your_app_id",
    "uid": "板块ID",
    "id": "帖子ID",
    "content": "请问这个问题有后续解决办法吗?",
    "user": "用户账号",
    "pass": "用户密码",
    "signature": "your_signature"
}

response = requests.get(
    "https://nobase.cn/api/bbs/comment_publish",
    params=params,
    timeout=8
)
print(response.json())

核心逻辑说明

1. 身份验证模式

模式验证流程关键限制
令牌启用1. 校验token存在性;
2. 验证token归属当前应用和开发者;
3. 获取用户信息。
token无效/过期/不匹配当前应用,返回401错误。
令牌未启用1. 校验userpass存在性;
2. 验证用户存在性及密码正确性;
3. 获取用户信息。
用户未注册返回404,密码错误返回404。

2. 业务校验规则

  • 资源存在性
    - 板块(uid)、帖子(id)必须存在,否则返回对应“不存在”错误;
    - 应用配置、开发者账号、用户账号、用户配置必须存在且匹配,否则返回对应错误;
  • 评论权限
    - 板块需允许评论(特定配置),否则返回“该板块不允许帖子评论”;
    - 应用不可处于“停用”或“审核中”状态,帖子不可处于“审核中”或“审核失败”状态,否则返回对应提示;
    - 开发者账号、用户账号需正常启用(状态为“正常”),否则返回“状态异常”;
  • 内容限制
    - content(评论内容)不可为空,否则返回参数缺失错误;
    - 用户账号长度需在配置范围内(最短-最长字符),否则返回长度校验失败;
  • 防频繁操作:60秒内同一用户不可重复评论,否则返回“评论频繁:请于XX秒后再评论!”(XX为剩余限制时间);
  • VIP校验:开发者VIP未逾期,否则返回逾期提示(如“已逾期(30分钟),请缴费后重试!”)。

3. 评论发布逻辑

  • 评论状态:根据板块配置的审核要求决定:
    - 若板块评论需审核(特定配置),评论状态设为“待审核”;
    - 若板块评论无需审核,评论状态设为“直接发布”;
  • 数据处理
    1. 插入评论数据(含用户信息、评论内容、发布时间、IP地址等);
    2. 自动更新目标帖子的评论数(现有数量+1);
    3. 记录当前评论时间到session,用于防频繁评论校验;
  • 结果响应:数据库操作成功返回“评论成功”,失败返回“评论失败”。

注意事项

  1. 参数规范

    • content为核心必填参数,不可为空或仅含空白字符,建议前端限制最小长度(如10字符);
    • id为目标帖子的唯一标识,需与uid(板块ID)对应,避免评论到错误帖子;
    • 两种验证模式的参数不可混用(如令牌启用时无需传user+pass)。
  2. 防刷机制

    • 接口通过session记录用户最近评论时间,60秒内禁止重复评论,前端可添加倒计时提示(基于返回的“请于XX秒后再评论”中的XX值);
    • 频繁触发限制可能导致临时封禁(需额外逻辑支持),建议前端添加操作间隔提示(如“评论间隔至少1分钟”)。
  3. 审核说明

    • 发布到“需审核”板块的评论,需等待版主审核通过后才会公开可见;
    • 发布到“无需审核”板块的评论,发布后实时可见,且同步更新帖子的评论数。
  4. 安全建议

    • 令牌未启用时,pass以明文传递,生产环境必须使用HTTPS协议;
    • 优先使用“令牌启用”模式,减少账号密码暴露风险;
    • 前端需对content进行内容过滤(如敏感词检测),避免发布违规内容。
  5. 数据同步

    • 评论发布成功后,帖子的评论数会自动+1,无需额外调用接口更新;
    • 若需实时展示最新评论列表,可在“评论成功”后调用“帖子评论列表接口”刷新数据。