Ce guide montre comment créer des fils de commentaires scopés à une ressource avec pagination, suppression par l'auteur uniquement et accès administrateur.
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
La réponse inclut total (nombre de tous les commentaires pour la ressource), limit et offset afin que les clients puissent construire des contrôles de pagination :
Les utilisateurs non-admins peuvent uniquement supprimer leurs propres commentaires. Tenter de supprimer le commentaire d'un autre utilisateur retourne 404 (pas 403) :
Toutes les requêtes incluent WHERE resource_id = :rid, s'assurant que les commentaires de la ressource 1 ne sont jamais mélangés avec ceux de la ressource 2.
POST /resources/{resourceId}/comments Poster un commentaire (X-User-Id requis)GET /resources/{resourceId}/comments Lister les commentaires (paginés, publics)DELETE /comments/{id} Supprimer un commentaire (auteur ou admin)
How-to : API de fil de commentaires
Ce guide montre comment créer des fils de commentaires scopés à une ressource avec pagination, suppression par l'auteur uniquement et accès administrateur.
Vue d'ensemble du pattern
limitetoffset.Schéma
2
3
4
5
6
7
8
Pattern de pagination
2
3
4
5
6
La réponse inclut
total(nombre de tous les commentaires pour la ressource),limitetoffsetafin que les clients puissent construire des contrôles de pagination :2
3
4
5
6
Limitation de la plage
Les valeurs de limit/offset invalides ou hors plage sont silencieusement ramenées aux valeurs par défaut sûres :
2
3
4
5
6
7
8
ctype_digit()est utilisé pour éviter les ReDoS sur la chaîne de requête.IDOR : Suppression par l'auteur uniquement
Les utilisateurs non-admins peuvent uniquement supprimer leurs propres commentaires. Tenter de supprimer le commentaire d'un autre utilisateur retourne 404 (pas 403) :
2
3
Isolation de la ressource
Toutes les requêtes incluent
WHERE resource_id = :rid, s'assurant que les commentaires de la ressource 1 ne sont jamais mélangés avec ceux de la ressource 2.Règles de validation
X-User-Idctype_digit, >0body{resourceId}ctype_digit, max 18 caractères, >0 ; sinon 404limit(query)offset(query)Routes
2
3
Voir aussi
../NENE2-FT/commentlog/docs/howto/note-taking.md(FT202, CRUD de notes)docs/howto/leaderboard-ranking.md(FT206, données scopées à une ressource)