Appearance
评论相关的公开接口,包括获取评论列表、提交评论、评论点赞等。
GET /api/comments
获取指定文章的评论列表,支持分页和嵌套结构。
GET
/api/comments
查询参数
post_slug
CWDComments
postSlug
siteId
default
page
1
limit
20
50
nested
'true'
成功响应
200
{ "data": [ { "id": 1, "author": "张三", "email": "zhangsan@example.com", "url": "https://example.com", "contentText": "很棒的文章!", "contentHtml": "很棒的文章!", "pubDate": "2026-01-13T10:00:00Z", "postSlug": "/blog/hello-world", "avatar": "https://gravatar.com/avatar/...", "priority": 2, "likes": 5, "replies": [ { "id": 2, "author": "李四", "email": "lisi@example.com", "url": null, "contentText": "同感!", "contentHtml": "同感!", "pubDate": "2026-01-13T11:00:00Z", "postSlug": "/blog/hello-world", "avatar": "https://gravatar.com/avatar/...", "parentId": 1, "replyToAuthor": "张三", "priority": 1, "likes": 2 } ] } ], "pagination": { "page": 1, "limit": 20, "total": 1, "totalCount": 2 } }
返回字段说明:
id
author
email
url
contentText
contentHtml
pubDate
avatar
priority
likes
replies
parentId
replyToAuthor
说明:
nested=true
nested=false
data
错误响应
缺少 post_slug:
400
{ "message": "post_slug is required" }
服务器内部错误:
500
{ "message": "错误信息" }
POST /api/comments
提交新评论或回复。
POST
请求头
Content-Type
application/json
X-Site-Id
blog
请求体(Request Body)
{ "post_slug": "hello-world", "post_title": "博客标题,可选", "post_url": "https://example.com/blog/hello-world", "name": "张三", "email": "zhangsan@example.com", "url": "https://zhangsan.me", "content": "很棒的文章!", "parent_id": 1, "adminToken": "your-admin-key" }
字段说明:
hello-world
post_title
post_url
name
content
<script>...</script>
parent_id
null
adminToken
/api/verify-admin
请求头说明:
评论直接通过时:
{ "message": "评论已提交", "status": "approved" }
评论进入待审核状态时(开启"先审核再显示"且非管理员评论):
{ "message": "已提交评论,待管理员审核后显示", "status": "pending" }
请求体缺失或字段类型错误:
{ "message": "无效的请求体" }
缺少必填字段:
post_slug 为空:
{ "message": "post_slug 必填" }
content 为空:
{ "message": "评论内容不能为空" }
author 为空:
{ "message": "昵称不能为空" }
email 为空或格式不正确:
{ "message": "邮箱不能为空" }
或
{ "message": "邮箱格式不正确" }
IP 或邮箱被限制:
IP 被限制:
403
{ "message": "当前 IP 已被限制评论,请联系站长进行处理" }
邮箱被限制:
{ "message": "当前邮箱已被限制评论,请联系站长进行处理" }
管理员评论验证失败:
未输入密钥:
401
{ "message": "请输入管理员密钥", "requireAuth": true }
密钥错误:
{ "message": "密钥错误" }
验证失败次数过多:
{ "message": "验证失败次数过多,请 30 分钟后再试" }
评论频率限制:
429
{ "message": "评论频繁,等 10s 后再试" }
{ "message": "Internal Server Error" }
POST /api/comments/like
对指定评论进行点赞操作。
/api/comments/like
请求体
{ "id": 123 }
{ "message": "点赞成功", "likes": 5 }
{ "message": "评论不存在" }
DELETE /api/comments/like
取消对指定评论的点赞。
DELETE
{ "message": "取消点赞成功", "likes": 4 }
评论接口
评论相关的公开接口,包括获取评论列表、提交评论、评论点赞等。
获取评论列表
获取指定文章的评论列表,支持分页和嵌套结构。
GET/api/comments查询参数
post_slugCWDComments的postSlug参数对应siteIddefaultpage1limit20,最大50nested'true'成功响应
200返回字段说明:
idauthoremailurlcontentTextcontentHtmlpubDatepostSlugavatarprioritylikesrepliesparentIdreplyToAuthor说明:
nested=true(默认)时,接口返回的是"根评论列表",每条根评论包含其replies。nested=false时,接口返回扁平列表,所有评论都在data中,replies为空。priority字段:评论的置顶权重,数值越大排序越靠前。likes字段:评论的点赞数,默认为 0。错误响应
缺少
post_slug:400服务器内部错误:
500提交评论
提交新评论或回复。
POST/api/comments请求头
Content-Typeapplication/json请求头
Content-Typeapplication/jsonX-Site-Idblog请求体(Request Body)
字段说明:
post_slugpostSlug值一致,如hello-worldpost_titlepost_urlnameemailurlcontent<script>...</script>片段parent_idnull表示根评论adminToken/api/verify-admin验证密钥后将密钥传入此字段,评论将直接通过且不受审核设置影响请求头说明:
X-Site-Iddefault成功响应
200评论直接通过时:
评论进入待审核状态时(开启"先审核再显示"且非管理员评论):
错误响应
请求体缺失或字段类型错误:
400缺少必填字段:
post_slug为空:content为空:author为空:email为空或格式不正确:或
IP 或邮箱被限制:
IP 被限制:
403邮箱被限制:
403管理员评论验证失败:
未输入密钥:
401密钥错误:
401验证失败次数过多:
403评论频率限制:
429服务器内部错误:
500点赞评论
对指定评论进行点赞操作。
POST/api/comments/like请求头
Content-Typeapplication/json请求体
字段说明:
id成功响应
200字段说明:
likes错误响应
400取消点赞评论
取消对指定评论的点赞。
DELETE/api/comments/like请求头
Content-Typeapplication/json请求体
字段说明:
id成功响应
200字段说明:
likes错误响应
400