CREATE TABLE IF NOT EXISTS comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, resource_id INTEGER NOT NULL, user_id INTEGER NOT NULL, body TEXT NOT NULL, created_at TEXT NOT NULL);CREATE INDEX IF NOT EXISTS idx_comments_resource ON comments (resource_id, id ASC);
$stmt = $this->pdo->prepare( 'SELECT * FROM comments WHERE resource_id = :rid ORDER BY id ASC LIMIT :lim OFFSET :off');$stmt->bindValue(':rid', $resourceId, PDO::PARAM_INT);$stmt->bindValue(':lim', $limit, PDO::PARAM_INT);$stmt->bindValue(':off', $offset, PDO::PARAM_INT);
1 2 3 4 5 6
A resposta inclui total (contagem de todos os comentários do recurso), limit e offset para que os clientes possam construir controles de paginação:
Como Fazer: API de Thread de Comentários
Este guia demonstra threads de comentários com escopo por recurso, paginação, deleção somente pelo autor e override do admin.
Visão Geral do Padrão
limiteoffset.Schema
2
3
4
5
6
7
8
Padrão de Paginação
2
3
4
5
6
A resposta inclui
total(contagem de todos os comentários do recurso),limiteoffsetpara que os clientes possam construir controles de paginação:2
3
4
5
6
Limitação de Valores
Valores inválidos ou fora do intervalo de limit/offset são silenciosamente limitados para padrões seguros:
2
3
4
5
6
7
8
ctype_digit()é usado para evitar ReDoS na query string.IDOR: Deleção Somente pelo Autor
Usuários não admin só podem deletar seus próprios comentários. Tentar deletar o comentário de outro usuário retorna 404 (não 403):
2
3
Isolamento por Recurso
Todas as consultas incluem
WHERE resource_id = :rid, garantindo que comentários do recurso 1 nunca sejam misturados com os do recurso 2.Regras de Validação
X-User-Idctype_digit, >0body{resourceId}ctype_digit, máx 18 chars, >0; caso contrário 404limitoffsetRotas
2
3
Veja Também
../NENE2-FT/commentlog/docs/howto/note-taking.md(FT202, CRUD de notas)docs/howto/leaderboard-ranking.md(FT206, dados com escopo por recurso)