Guides

Comment créer une API REST : conception, sécurité et déploiement

Pour créer une API REST, listez les ressources que gère votre application (utilisateurs, commandes, réservations), attribuez à chacune une URL comme /orders et /orders/{id}, et utilisez les méthodes HTTP pour les actions : GET pour lire, POST pour créer, PATCH pour modifier, DELETE pour supprimer. Renvoyez du JSON avec des codes de statut explicites, validez chaque entrée, exigez une authentification et des contrôles d'accès par enregistrement côté serveur, et paginez les listes. Documentez ensuite les points d'accès et déployez l'API derrière HTTPS.

Ce guide couvre les choix de conception, un jeu de routes détaillé, des prompts pour un créateur d'applications par IA et les erreurs qui créent des failles de sécurité. Si les API sont nouvelles pour vous, commencez par ce qu'est une API.

Quand vous avez besoin d'une API REST

  • Votre interface web doit enregistrer et charger des données depuis un serveur
  • Une application mobile, un partenaire ou un outil d'automatisation a besoin d'accéder à vos données
  • D'autres services vous envoient des événements (webhooks)
  • Vous répartissez le travail entre une équipe frontend et une équipe backend

REST est le style le plus courant, mais ce n'est pas le seul. REST ou GraphQL explique quand un point d'accès unique à requêtes flexibles convient mieux.

Concevoir d'abord : ressources et routes

Listez les noms de votre application et ce que les utilisateurs font avec eux. Pour une application de réservation simple :

MéthodeRouteCe qu'elle faitCode de succès
GET/api/bookingsListe les réservations de l'appelant (paginée)200
POST/api/bookingsCrée une réservation201
GET/api/bookings/{id}Renvoie une réservation200
PATCH/api/bookings/{id}Modifie certains champs200
DELETE/api/bookings/{id}Annule une réservation204
GET/api/healthContrôle de santé pour la supervision200

Elles correspondent à créer, lire, modifier et supprimer ; voir ce qu'est le CRUD. Conventions utiles à suivre :

  • Des noms au pluriel, sans verbes dans les URL : /bookings, pas /getBookings.
  • N'imbriquez qu'un niveau lorsque cela clarifie la propriété : /bookings/{id}/notes.
  • Les actions qui ne relèvent pas du CRUD peuvent être des sous-ressources : POST /bookings/{id}/cancel est plus clair qu'un PATCH magique.
  • Des noms de champs cohérents, comme created_at partout.

Codes de statut et erreurs

Utilisez les codes HTTP standard pour que les clients sachent ce qui s'est passé sans analyser de texte :

CodeSignificationÀ utiliser quand
200OKLecture ou modification réussie
201CreatedUn POST a créé une ressource
204No ContentSuccès sans rien à renvoyer
400Bad RequestLa donnée n'a pas passé la validation
401UnauthorizedNon connecté ou jeton invalide
403ForbiddenConnecté mais non autorisé
404Not FoundN'existe pas, ou l'appelant ne doit pas savoir qu'elle existe
409ConflictDoublon, ou le créneau est déjà réservé
429Too Many RequestsLimite de requêtes atteinte
500Server ErrorUn problème côté serveur

Renvoyez les erreurs dans une structure JSON unique et cohérente, par exemple {"error": {"code": "slot_taken", "message": "Ce créneau n'est plus disponible."}}, et n'incluez jamais de traces d'appel ni d'erreurs de base de données dans les réponses.

Options et compromis

DécisionChoix simpleAlternative
Où vit l'APIRoutes d'API dans votre framework webUn service d'API séparé, utile pour plusieurs clients ou un autre langage
AuthentificationCookies de session pour votre propre application webJetons (jetons bearer ou clés d'API) pour les applications mobiles et les tiers
Pagination?page=2&limit=20Par curseur (?after=...), plus stable pour les listes volumineuses et changeantes
VersionsAucune tant que personne d'extérieur ne dépend de l'API/v1/ dans le chemin lorsque d'autres l'utilisent
DocumentationUn README listant les routesUne spécification OpenAPI, que des outils transforment en documentation interactive et en code client

Étape par étape

  1. Listez les ressources et les routes comme ci-dessus, en précisant qui peut appeler chacune.
  2. Modélisez les données dans votre base avec les champs et les relations nécessaires.
  3. Construisez d'abord les routes de lecture, puis la création, la modification et la suppression.
  4. Validez les entrées à chaque écriture avec une bibliothèque de schémas : champs obligatoires, types, longueurs, valeurs autorisées. Rejetez les champs inconnus.
  5. Ajoutez l'authentification, puis l'autorisation par enregistrement : charger /bookings/42 doit vérifier que la réservation 42 appartient à l'appelant, et non simplement qu'une personne est connectée.
  6. Paginez chaque liste et limitez la taille des pages.
  7. Limitez le nombre de requêtes sur la connexion et les routes coûteuses. Voir la limitation de débit.
  8. Configurez CORS seulement si des navigateurs d'autres domaines doivent appeler l'API, et listez explicitement ces origines. Corriger les erreurs CORS explique les erreurs que vous rencontrerez.
  9. Rédigez la documentation et les tests de chaque route, y compris les cas d'échec.
  10. Déployez avec les secrets dans des variables d'environnement, HTTPS, des journaux et un contrôle de santé.

Prompts à donner à votre créateur par IA

Squelette :

Crée une API REST pour les réservations avec ces routes : GET /api/health, GET /api/bookings (paginée, 50 éléments maximum par page), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. Stocke les données dans notre base de données. Valide les corps de requête avec une bibliothèque de schémas et rejette les champs inconnus. Renvoie les erreurs JSON sous la forme {"error": {"code", "message"}} avec les bons codes de statut (400, 401, 403, 404, 409). Garde les secrets dans des variables d'environnement.

Sécurité :

Exige une connexion sur chaque route de réservations. Pour chaque lecture, modification et suppression, vérifie côté serveur que la réservation appartient à l'utilisateur courant ; renvoie 404 sinon. N'accepte jamais d'identifiants d'utilisateur ni de rôles dans le corps de la requête. Limite POST /api/bookings à 20 par minute et par utilisateur. Journalise les erreurs côté serveur sans renvoyer de traces d'appel.

Documentation :

Rédige une description OpenAPI de ces routes, ainsi qu'un court README avec des exemples de requêtes et de réponses pour chacune.

Tester votre API

Testez depuis l'extérieur de l'interface, car les attaquants le feront :

  • Chaque route fonctionne avec des données valides et renvoie la forme et le code documentés
  • Des champs manquants ou invalides renvoient 400 avec un message clair
  • L'absence de jeton renvoie 401 sur chaque route protégée
  • L'utilisateur A qui demande l'enregistrement de l'utilisateur B par son identifiant reçoit 404 ou 403
  • Les listes sont paginées ; une valeur limit énorme est plafonnée
  • Les créations en double ou en conflit renvoient 409, et non 500
  • Les limites de requêtes renvoient 429
  • Les réponses d'erreur ne contiennent ni traces d'appel, ni SQL, ni secrets
  • CORS n'autorise que les origines prévues

Erreurs courantes

  • Vérifier la connexion mais pas la propriété. La faille d'API la plus courante : n'importe quel utilisateur connecté peut lire n'importe quel enregistrement en changeant l'identifiant.
  • Faire confiance au client. Les prix, les rôles et les identifiants d'utilisateur envoyés dans le corps de la requête peuvent être modifiés.
  • Renvoyer des lignes de base de données entières. Les hachages de mots de passe et les champs internes fuient. Choisissez ce que chaque réponse contient.
  • Des listes sans limite. Une requête pour chaque enregistrement peut ralentir toute l'application.
  • 200 OK avec un message d'erreur à l'intérieur. Les clients et la supervision ne peuvent pas savoir que cela a échoué.
  • CORS configuré pour tout autoriser sur une API qui utilise des cookies.
  • Pas de contrôle de santé ni de journaux, si bien que vous apprenez les pannes par vos utilisateurs.

Pour une revue plus large avant le lancement, voir la liste de contrôle de sécurité pour les applications créées par IA.

Construire une API REST dans Mythex

Vous pouvez demander à Mythex une API dans le cadre de votre application ou comme service à part entière. La recette de la documentation backend API REST propose un prompt de départ : nommez votre framework et vos routes, demandez des erreurs JSON claires, gardez les secrets dans des variables d'environnement et incluez un Dockerfile. Les backends conteneurisés en Node, Python, C#, Java et d'autres se publient via un Dockerfile, et Mythex gère le déploiement depuis Publier (backends d'API). Un projet peut faire tourner un site et un serveur d'API côte à côte, et vous pouvez passer de l'un à l'autre dans l'aperçu. Stockez les clés comme secrets du projet, et si l'API a besoin d'une base de données, demandez-la dans le chat. Pour le travail planifié autour de votre API, voir comment lancer des tâches en arrière-plan.

Questions

Qu'est-ce qu'une API REST ?

Une API REST permet à des programmes de travailler avec les données de votre application via HTTP. Chaque type de donnée est une ressource avec sa propre URL, comme /orders, et des méthodes standard agissent dessus : GET pour lire, POST pour créer, PATCH ou PUT pour modifier et DELETE pour supprimer. Les données sont généralement envoyées au format JSON.

Dans quel langage dois-je créer une API REST ?

Choisissez celui que vous ou votre équipe pouvez maintenir. Node.js avec Express ou Fastify, Python avec FastAPI, ou les frameworks C# et Java fonctionnent tous bien. Les règles de conception des routes, des codes de statut, de la validation et de l'authentification comptent plus que le langage.

Comment sécuriser une API REST ?

Exigez une authentification sur chaque route non publique, vérifiez côté serveur que l'appelant a le droit d'accéder à chaque enregistrement précis, validez toutes les entrées, utilisez HTTPS, limitez le nombre de requêtes et gardez les secrets dans des variables d'environnement. Ne faites jamais confiance aux identifiants ou aux rôles envoyés par le client.

Ai-je besoin d'un backend séparé pour une API REST ?

Pas toujours. Des frameworks comme Next.js peuvent servir des routes d'API à côté des pages. Un service d'API séparé a du sens lorsque plusieurs clients (web, mobile, partenaires) l'utilisent, ou lorsqu'il a besoin de son propre langage ou de sa propre mise à l'échelle.

Mythex · Pricing · Créez tout avec l'IA · Modèles de sites et d'applications · Mythex comparé · Glossaire de la création d'applications avec l'IA · Outils gratuits pour créer des applications avec l'IA · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)