HTTPQUERY
Français

DELETE

Utilisation

Une requête DELETE demande au serveur de supprimer la ressource cible. C’est le serveur qui détermine ce que la suppression signifie en pratique : la ressource peut être effacée définitivement, archivée ou marquée comme inactive.

Les API REST s’appuient largement sur DELETE pour représenter la destruction d’une ressource. Un point de terminaison d’API comme DELETE /api/users/123 exprime clairement l’intention de supprimer l’enregistrement utilisateur identifié par 123. Cela correspond directement au modèle PUT/POST/GET/DELETE pour les opérations de création, de mise à jour, de lecture et de destruction.

Les formulaires HTML ne prennent en charge que GET et POST. Les API JavaScript telles que fetch et XMLHttpRequest prennent en charge DELETE nativement. Certains frameworks utilisent POST avec un paramètre _method=DELETE comme contournement.

Le serveur répond avec l’un des codes de statut suivants, selon le résultat :

Une suppression définitive retire la ressource de façon permanente. Les requêtes GET ultérieures renvoient 404 ou 410 Gone. Une suppression logique marque la ressource comme inactive sans supprimer les données sous-jacentes. La ressource reste accessible via une API d’administration ou à l’aide d’un paramètre de requête. 410 communique une suppression permanente, tandis que 404 convient lorsque la ressource n’existe plus à l’URI.

Une requête DELETE est idempotente. Envoyer la même requête plusieurs fois produit le même état serveur que de l’envoyer une seule fois. La première requête supprime la ressource, et les requêtes suivantes n’ont aucun effet supplémentaire. Les codes de réponse peuvent toutefois différer : la première requête renvoie 200 OK ou 204 No Content, tandis que les suivantes renvoient 404 Not Found ou 410 Gone.

Supprimer une ressource

Un client demande la suppression d’un fichier précis. Le serveur supprime le fichier et répond 204 No Content pour confirmer l’action sans corps de message.

Requête

DELETE /uploads/report.pdf HTTP/1.1
Host: api.example.re

Réponse

HTTP/1.1 204 No Content

Suppression via API REST avec confirmation

Une API REST renvoie 200 OK accompagné d’un corps JSON confirmant la suppression et identifiant la ressource supprimée.

Requête

DELETE /api/users/123 HTTP/1.1
Host: api.example.re
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

Réponse

HTTP/1.1 200 OK
Content-Type: application/json

{"deleted": true, "id": 123}

L’en-tête Authorization transporte un jeton bearer, car la plupart des API exigent une authentification avant d’autoriser des opérations destructrices.

CORS

Les requêtes DELETE cross-origin déclenchent toujours un préflight CORS. Le navigateur envoie d’abord une requête OPTIONS pour confirmer que le serveur autorise DELETE sur la ressource cible.

Corps de requête et de réponse

Les requêtes DELETE peuvent inclure un corps, mais la sémantique en est indéfinie. Certains intermédiaires rejettent les requêtes DELETE comportant un corps en raison des risques de request smuggling. La plupart des API n’utilisent pas de corps de requête pour DELETE. Lorsqu’un corps est nécessaire, par exemple pour une suppression en masse, le serveur définit le format attendu.

Le corps de la réponse dépend du code de statut. Une réponse 200 OK inclut un corps décrivant le résultat ou renvoyant la ressource supprimée. Une réponse 204 No Content confirme la suppression sans corps. Une réponse 202 Accepted indique que la suppression est mise en file d’attente ou en cours et inclut généralement une référence vers un moniteur d’état.

Codes de statut de réponse

204 No Content est la réponse la plus courante pour les suppressions simples où aucun corps n’est nécessaire. 200 OK convient lorsque le serveur renvoie la ressource supprimée ou un message de confirmation dans le corps de la réponse.

202 Accepted signale que la suppression est mise en file d’attente ou asynchrone. La réponse inclut généralement un en-tête Location ou un corps pointant vers un point de terminaison d’état où le client vérifie la progression.

Les requêtes ultérieures vers une ressource supprimée renvoient 404 Not Found ou 410 Gone. Une réponse 410 indique que la ressource existait auparavant et a été retirée intentionnellement, tandis que 404 n’établit pas cette distinction.