Appearance
论坛帖子点赞/取消点赞接口
用于用户对指定帖子执行点赞(like=1)或取消点赞(like=2)操作,支持两种身份验证模式(令牌启用时通过token验证,令牌未启用时通过user+pass验证),仅正常状态的用户可操作。
请求地址 GET / POST
http
https://nobase.cn/api/bbs/post_like请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用唯一标识,从开发者中心获取 |
| uid | query | string | ✅ 是 | 板块ID,帖子所属板块的唯一标识 |
| id | query | string | ✅ 是 | 帖子ID,需点赞/取消点赞的帖子唯一标识 |
| like | query | string | ✅ 是 | 操作类型:1=点赞,2=取消点赞 |
| signature | query | string | ✅ 是 | 应用签名,与后台配置一致,用于验证请求合法性 |
| token | query | string | 条件必选 | 用户令牌,仅令牌启用时需传递,需绑定当前应用和开发者 |
| user | query | string | 条件必选 | 用户账号,仅令牌未启用时需传递 |
| pass | query | string | 条件必选 | 用户密码,仅令牌未启用时需传递 |
返回示例
成功响应(点赞成功)
json
{
"code": 200,
"msg": "success",
"data": "操作成功"
}成功响应(取消点赞成功)
json
{
"code": 200,
"msg": "success",
"data": "操作成功"
}失败响应(参数问题)
json
{
"code": 204,
"msg": "fail",
"data": "接口参数错误:缺少like"
}json
{
"code": 405,
"msg": "fail",
"data": "like参数错误(需为1或2)"
}json
{
"code": 204,
"msg": "fail",
"data": "接口参数错误:令牌启用需传token!"
}失败响应(操作逻辑错误)
json
{
"code": 405,
"msg": "fail",
"data": "该帖子您已经点赞过了"
}json
{
"code": 405,
"msg": "fail",
"data": "该帖子您还没有点赞过哦!"
}失败响应(身份验证/权限异常)
json
{
"code": 401,
"msg": "fail",
"data": "token无效或已过期(非当前应用/开发者)!"
}json
{
"code": 404,
"msg": "fail",
"data": "用户账号密码错误!"
}json
{
"code": 404,
"msg": "fail",
"data": "用户账号状态异常!"
}失败响应(资源/状态异常)
json
{
"code": 407,
"msg": "fail",
"data": "该帖子不存在!"
}json
{
"code": 404,
"msg": "fail",
"data": "帖子审核中!"
}json
{
"code": 404,
"msg": "fail",
"data": "开发者账号已逾期(3天),请缴费后重试!"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=操作成功;204=参数缺失/错误;400=应用配置错误;401=token无效;402=签名失败;404=资源不存在/状态异常(如帖子不存在、账号状态异常);405=操作逻辑错误(如重复点赞)/操作失败;407=应用配置/板块/帖子不存在 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | string | 响应数据:操作结果提示或错误原因,如“操作成功”“该帖子您已经点赞过了” |
代码示例
javascript
// 令牌启用时点赞帖子(like=1)
const params = new URLSearchParams({
appid: "your_app_id",
uid: "板块ID",
id: "目标帖子ID",
like: "1", // 1=点赞,2=取消点赞
token: "valid_user_token", // 用户有效令牌
signature: "your_signature"
});
fetch("https://nobase.cn/api/bbs/post_like", {
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
// 令牌未启用时取消点赞(like=2)
const url = new URL("https://nobase.cn/api/bbs/post_like");
url.searchParams.set("appid", "your_app_id");
url.searchParams.set("uid", "板块ID");
url.searchParams.set("id", "目标帖子ID");
url.searchParams.set("like", "2");
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",
"like": "1",
"token": "valid_user_token",
"signature": "your_signature"
}
response = requests.post(
"https://nobase.cn/api/bbs/post_like",
data=params,
timeout=8
)
res_data = response.json()
print("操作结果:", res_data["data"])python
import requests
# 令牌未启用时取消点赞
params = {
"appid": "your_app_id",
"uid": "板块ID",
"id": "帖子ID",
"like": "2",
"user": "用户账号",
"pass": "用户密码",
"signature": "your_signature"
}
response = requests.get(
"https://nobase.cn/api/bbs/post_like",
params=params,
timeout=8
)
print(response.json())核心逻辑说明
1. 身份验证模式
| 模式 | 验证流程 | 关键限制 |
|---|---|---|
| 令牌启用 | 1. 校验token存在性;2. 验证 token归属当前应用和开发者;3. 获取用户信息。 | token无效/过期/不匹配当前应用,返回401错误。 |
| 令牌未启用 | 1. 校验user和pass存在性;2. 验证用户存在性及密码正确性; 3. 获取用户信息。 | 用户未注册返回404,密码错误返回404。 |
2. 业务校验规则
- 资源存在性:
- 板块(uid)、帖子(id)必须存在,否则返回对应“不存在”错误;
- 应用配置、开发者账号、用户账号、用户配置必须存在且匹配,否则返回对应错误; - 状态合法性:
- 开发者账号、用户账号需正常启用(状态为“正常”),否则返回“状态异常”;
- 应用不可处于“停用”或“审核中”状态,否则返回对应提示;
- 帖子不可处于“审核中”状态,否则返回“帖子审核中!”; - 参数校验:
like必须为1(点赞)或2(取消点赞),否则返回“like参数错误(需为1或2)”; - VIP校验:开发者VIP未逾期,否则返回逾期提示(如“已逾期(3天),请缴费后重试!”);
- 账号长度:用户账号长度需在配置的范围内(最短-最长字符),否则返回长度校验失败。
3. 点赞/取消点赞逻辑
- 点赞(
like=1):
- 检查用户是否已点赞该帖子,若未点赞则执行:
- 帖子点赞数+1;
- 记录用户到点赞列表;
- 若已点赞,返回“该帖子您已经点赞过了”。 - 取消点赞(
like=2):
- 检查用户是否已点赞该帖子,若已点赞则执行:
- 帖子点赞数-1;
- 从点赞列表中移除用户;
- 若未点赞,返回“该帖子您还没有点赞过哦!”。 - 操作结果:数据库更新成功返回“操作成功”,失败返回“操作失败”。
注意事项
参数规范
id为目标帖子的唯一标识,需与uid(板块ID)对应,确保操作目标正确;like参数仅支持1或2,其他值会被拦截并提示参数错误;- 两种验证模式的参数不可混用(如令牌启用时无需传
user+pass)。
操作限制
- 同一用户对同一帖子仅能点赞一次,重复点赞会被拦截;
- 未点赞的帖子无法执行取消点赞操作,会被提示“未点赞过”;
- 帖子处于“审核中”时不支持点赞操作,需等待审核通过。
安全建议
- 令牌未启用时,
pass以明文传递,生产环境必须使用HTTPS协议; - 优先使用“令牌启用”模式,减少账号密码暴露风险;
- 签名(
signature)需严格按照后台规则生成,防止请求被篡改。
- 令牌未启用时,
业务说明
- 点赞数实时更新,可通过帖子详情接口获取最新点赞数;
- 点赞记录与用户账号绑定,删除用户账号会同步清除其点赞记录(需额外逻辑支持)。

