Code HTTP 201 : Created - Ressource Créée
Le code de succÚs pour les opérations de création dans les API REST
Le code HTTP 201 "Created" indique que la requĂȘte a abouti et qu'une nouvelle ressource a Ă©tĂ© créée sur le serveur. C'est le code de rĂ©ponse appropriĂ© pour les requĂȘtes POST (et parfois PUT) qui crĂ©ent des donnĂ©es. Il est plus prĂ©cis que le 200 car il informe explicitement le client que quelque chose de nouveau existe maintenant.
Dans une API REST bien conçue, le 201 est systĂ©matiquement accompagnĂ© d'informations permettant d'accĂ©der Ă la nouvelle ressource : le header Location contenant l'URL de la ressource, et souvent le body contenant la reprĂ©sentation complĂšte de ce qui a Ă©tĂ© créé. Cette rĂ©ponse riche permet au client de continuer sans requĂȘte supplĂ©mentaire.
Pour le monitoring, les endpoints retournant 201 sont souvent critiques : crĂ©ation de commandes, inscriptions utilisateurs, soumissions de formulaires. Un 201 qui cesse de fonctionner signifie que vos utilisateurs ne peuvent plus crĂ©er de donnĂ©es. MoniTao permet de surveiller ces endpoints avec des requĂȘtes POST et de vĂ©rifier le code 201.
Signification du code 201
Le code 201 transmet plusieurs informations importantes au client :
- CrĂ©ation confirmĂ©e : contrairement au 200 gĂ©nĂ©rique, le 201 confirme explicitement qu'une ressource a Ă©tĂ© créée. Le serveur ne fait pas que "rĂ©ussir" la requĂȘte, il a créé quelque chose de nouveau et persistant.
- Ressource disponible : la nouvelle ressource existe et est accessible immédiatement. Si elle n'était pas encore disponible (traitement asynchrone), on utiliserait plutÎt un 202 Accepted.
- Header Location : le header Location DEVRAIT contenir l'URI de la nouvelle ressource. C'est une convention REST importante qui permet au client de savoir oĂč retrouver ce qu'il vient de crĂ©er.
- Body informatif : le body contient généralement la représentation de la ressource créée, incluant les champs générés par le serveur (ID, timestamps, etc.).
Cas d'utilisation du code 201
Voici les situations typiques oĂč le code 201 est appropriĂ© :
- Création d'utilisateur : POST /api/users avec les données d'inscription. Le 201 confirme que le compte est créé, retourne l'ID utilisateur et l'URL du profil.
- Ajout au panier e-commerce : POST /api/cart/items pour ajouter un produit. Le 201 confirme l'ajout et retourne l'item avec son ID dans le panier.
- Soumission de formulaire : POST /api/contact-requests pour envoyer un message. Le 201 indique que la demande a été enregistrée en base.
- Upload de fichier : POST /api/files avec le fichier en multipart. Le 201 retourne les métadonnées du fichier uploadé (URL, taille, type).
Exemple d'implémentation du code 201
Voici comment implémenter correctement une réponse 201 dans votre API :
// PHP - Création d'un utilisateur
public function createUser(Request $request): Response
{
$data = $request->getJson();
// Validation...
$user = User::create([
"name" => $data["name"],
"email" => $data["email"],
]);
return new Response(
json_encode($user),
201, // Created
[
"Content-Type" => "application/json",
"Location" => "/api/users/" . $user->id
]
);
}
// Node.js / Express
app.post("/api/users", async (req, res) => {
const user = await User.create(req.body);
res.status(201)
.location(`/api/users/${user.id}`)
.json(user);
});
Notez les éléments clés : le code 201, le header Location pointant vers la nouvelle ressource, et le body contenant la représentation complÚte avec les champs générés (id).
Monitoring des endpoints 201
Surveiller les endpoints de création est crucial pour votre business :
- RequĂȘtes POST avec body : MoniTao peut envoyer des requĂȘtes POST avec un body de test pour vĂ©rifier que l'endpoint de crĂ©ation fonctionne. Configurez des donnĂ©es de test qui seront créées pĂ©riodiquement.
- Vérification du code 201 : configurez le monitor pour alerter si le code retourné n'est pas 201. Un 500 ou 400 signifie que les créations échouent.
- Vérification du header Location : assurez-vous que la réponse inclut bien le header Location avec une URL valide vers la ressource créée.
- Nettoyage des données de test : créez un endpoint de test dédié qui nettoie aprÚs lui, ou utilisez des webhooks pour supprimer les ressources de test créées par le monitoring.
Checklist API REST pour le 201
- POST retourne 201 (pas 200) pour les créations réussies
- Header Location présent et contient l'URI de la ressource
- Body contient la représentation de la ressource créée
- Les champs générés (id, created_at) sont inclus
- Temps de réponse acceptable pour les opérations d'écriture
- Gestion des doublons avec 409 Conflict si approprié
Questions fréquentes sur le code 201
Quelle est la différence entre 200 et 201 ?
Le 200 est un succÚs générique. Le 201 est spécifique : il indique qu'une ressource a été créée. Pour un POST qui crée des données, 201 est sémantiquement correct et plus informatif.
Faut-il toujours retourner le body avec un 201 ?
Ce n'est pas obligatoire par la spec HTTP, mais c'est une bonne pratique REST. Le client reçoit la ressource avec ses champs gĂ©nĂ©rĂ©s (ID, timestamps) sans requĂȘte GET supplĂ©mentaire.
Comment gérer un doublon (ex: email déjà utilisé) ?
Retournez un 409 Conflict avec un message expliquant le conflit. Certaines API utilisent 422 Unprocessable Entity. Dans tous les cas, pas de 201 si la création n'a pas eu lieu.
PUT peut-il retourner 201 ?
Oui, si le PUT crée la ressource (upsert). Si la ressource existait déjà et a été mise à jour, utilisez 200 ou 204. Le 201 est réservé aux créations.
Comment monitorer un endpoint POST sans polluer la base ?
Créez un endpoint /api/health/create-test dédié au monitoring qui crée et supprime immédiatement, ou utilisez des webhooks MoniTao pour nettoyer les données de test.
Mon framework retourne 200 par défaut. Comment forcer 201 ?
La plupart des frameworks permettent de spécifier le code : response.status(201) en Express, return response(201) en Laravel, HttpResponse(status=201) en Django.
Le 201, signature d'une API bien conçue
Utiliser correctement le code 201 est un signe de maturitĂ© API. Il fournit une information sĂ©mantique prĂ©cise au client : "j'ai créé quelque chose de nouveau, voici oĂč le trouver". CombinĂ© avec le header Location et un body informatif, il permet au client de travailler efficacement sans requĂȘtes supplĂ©mentaires.
MoniTao vous permet de surveiller vos endpoints de crĂ©ation avec des requĂȘtes POST configurables. VĂ©rifiez que le code 201 est retournĂ©, que le header Location est prĂ©sent, et que le temps de rĂ©ponse reste acceptable. Un endpoint de crĂ©ation dĂ©faillant impacte directement l'acquisition et les conversions.
Liens utiles
PrĂȘt Ă dormir sur vos deux oreilles ?
Commencez gratuitement, sans carte bancaire.