{"id":70479,"date":"2023-06-28T07:45:43","date_gmt":"2023-06-28T06:45:43","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=70479&#038;post_type=knowledgebase&#038;preview_id=70479"},"modified":"2025-10-01T20:42:37","modified_gmt":"2025-10-01T19:42:37","slug":"limitation-debit-api","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/","title":{"rendered":"Limitation du d\u00e9bit de l&rsquo;API : Le guide ultime"},"content":{"rendered":"<p>Les API sont un excellent moyen pour les applications logicielles de communiquer entre elles. Elles permettent aux applications logicielles d&rsquo;interagir et de partager des ressources ou des privil\u00e8ges.<\/p>\n<p>Aujourd&rsquo;hui, de nombreuses entreprises B2B proposent leurs services via des API qui peuvent \u00eatre utilis\u00e9es par des applications con\u00e7ues dans n&rsquo;importe quel langage de programmation et n&rsquo;importe quel framework. Cependant, cela les rend vuln\u00e9rables aux attaques DoS et DDoS et peut \u00e9galement conduire \u00e0 une distribution in\u00e9gale de la bande passante entre les utilisateurs. Pour r\u00e9soudre ces probl\u00e8mes, une technique connue sous le nom de \u00ab API rate limiting \u00bb est mise en \u0153uvre. L&rsquo;id\u00e9e est simple : vous limitez le nombre de requ\u00eates que les utilisateurs peuvent adresser \u00e0 votre API.<\/p>\n<p>Dans ce guide, vous apprendrez ce qu&rsquo;est la limitation du d\u00e9bit de l&rsquo;API, les diff\u00e9rentes fa\u00e7ons dont elle peut \u00eatre mise en \u0153uvre, ainsi que quelques bonnes pratiques et exemples \u00e0 retenir lors de la mise en place de la limitation du d\u00e9bit de l&rsquo;API.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Qu&rsquo;est-ce que la limitation du d\u00e9bit de l&rsquo;API ?<\/h2>\n<p>En termes simples, la limitation du d\u00e9bit de l&rsquo;API consiste \u00e0 fixer un seuil ou une limite au nombre de fois qu&rsquo;une <a href=\"https:\/\/kinsta.com\/fr\/blog\/api-endpoint\/\">API<\/a> peut \u00eatre consult\u00e9e par ses utilisateurs. Les limites peuvent \u00eatre fix\u00e9es de plusieurs mani\u00e8res.<\/p>\n<h3>1. Limites bas\u00e9es sur l&rsquo;utilisateur<\/h3>\n<p>L&rsquo;une des fa\u00e7ons de fixer une limite de d\u00e9bit consiste \u00e0 r\u00e9duire le nombre de fois qu&rsquo;un utilisateur donn\u00e9 peut acc\u00e9der \u00e0 l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/micro-services-vs-api\/\">API<\/a> dans un laps de temps donn\u00e9. Pour cela, vous pouvez compter le nombre de requ\u00eates effectu\u00e9es \u00e0 l&rsquo;aide de la m\u00eame cl\u00e9 API ou de la m\u00eame adresse IP ; lorsqu&rsquo;un seuil est atteint, les requ\u00eates suppl\u00e9mentaires sont limit\u00e9es ou refus\u00e9es.<\/p>\n<h3>2. Limites bas\u00e9es sur la localisation<\/h3>\n<p>Dans de nombreux cas, les d\u00e9veloppeurs souhaitent r\u00e9partir la bande passante disponible pour leur API de mani\u00e8re \u00e9gale entre certains emplacements g\u00e9ographiques.<\/p>\n<p>Le r\u00e9cent service de pr\u00e9visualisation <a href=\"https:\/\/kinsta.com\/fr\/blog\/clone-application-chatgpt\/\">ChatGPT<\/a> est un bon exemple de <a href=\"https:\/\/twitter.com\/codewithvoid\/status\/1619372391179714560?s=20&#038;t=C0RHEAxKC2xVEnpcLEQ9_Q\" target=\"_blank\" rel=\"noopener noreferrer\">limitation de d\u00e9bit bas\u00e9e sur la localisation<\/a>, car il a commenc\u00e9 \u00e0 limiter les requ\u00eates en fonction de la localisation des utilisateurs sur la version gratuite du service, une fois que la version payante a \u00e9t\u00e9 d\u00e9ploy\u00e9e. C&rsquo;\u00e9tait logique puisque la version gratuite \u00e9tait cens\u00e9e \u00eatre utilis\u00e9e par des personnes du monde entier afin de g\u00e9n\u00e9rer un bon \u00e9chantillon de donn\u00e9es d&rsquo;utilisation pour le service.<\/p>\n<h3>3. Limites bas\u00e9es sur le serveur<\/h3>\n<p>La limitation de d\u00e9bit bas\u00e9e sur le serveur est une limite de d\u00e9bit interne mise en \u0153uvre du c\u00f4t\u00e9 du serveur pour assurer une distribution \u00e9quitable des ressources du serveur telles que l&rsquo;unit\u00e9 centrale, la m\u00e9moire, l&rsquo;espace disque, etc. Il s&rsquo;agit de mettre en place une limite sur chaque serveur d&rsquo;un d\u00e9ploiement.<\/p>\n<p>Lorsqu&rsquo;un serveur atteint sa limite, les autres requ\u00eates entrantes sont achemin\u00e9es vers un autre serveur disposant d&rsquo;une capacit\u00e9 disponible. Si tous les serveurs ont atteint leur capacit\u00e9, l&rsquo;utilisateur re\u00e7oit une r\u00e9ponse <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Status\/429\" target=\"_blank\" rel=\"noopener noreferrer\">429 Too Many Requests<\/a>. Il est important de noter que les limites de d\u00e9bit bas\u00e9es sur les serveurs sont appliqu\u00e9es \u00e0 tous les clients, ind\u00e9pendamment de leur situation g\u00e9ographique, de l&rsquo;heure d&rsquo;acc\u00e8s ou d&rsquo;autres facteurs.<\/p>\n\n<h2>Types de limites de d\u00e9bit de l&rsquo;API<\/h2>\n<p>Outre la nature de la mise en \u0153uvre des limites de d\u00e9bit, vous pouvez \u00e9galement classer les limites de d\u00e9bit en fonction de leur effet sur l&rsquo;utilisateur final. Voici quelques types courants :<\/p>\n<ul>\n<li><b>Limites strictes :<\/b> Il s&rsquo;agit de limites strictes qui, lorsqu&rsquo;elles sont franchies, emp\u00eachent totalement l&rsquo;utilisateur d&rsquo;acc\u00e9der \u00e0 la ressource jusqu&rsquo;\u00e0 ce que la limite soit lev\u00e9e.<\/li>\n<li><b>Limites souples :<\/b> Il s&rsquo;agit de limites souples qui, lorsqu&rsquo;elles sont franchies, peuvent encore permettre \u00e0 l&rsquo;utilisateur d&rsquo;acc\u00e9der \u00e0 la ressource quelques fois de plus (ou de limiter les requ\u00eates) avant d&rsquo;en fermer l&rsquo;acc\u00e8s.<\/li>\n<li><b>Limites dynamiques :<\/b> Ces limites d\u00e9pendent de multiples facteurs tels que la charge du serveur, le trafic du r\u00e9seau, la localisation de l&rsquo;utilisateur, l&rsquo;activit\u00e9 de l&rsquo;utilisateur, la distribution du trafic, etc. et sont modifi\u00e9es en temps r\u00e9el pour un fonctionnement efficace des ressources.<\/li>\n<li><b>Restrictions :<\/b> Ces limites ne coupent pas l&rsquo;acc\u00e8s \u00e0 la ressource, mais ralentissent ou mettent en file d&rsquo;attente les requ\u00eates entrantes jusqu&rsquo;\u00e0 ce que la limite soit lev\u00e9e.<\/li>\n<li><b>Limites facturables :<\/b> Ces limites ne restreignent pas l&rsquo;acc\u00e8s \u00e0 la ressource, mais ralentissent ou mettent en file d&rsquo;attente les requ\u00eates ult\u00e9rieures jusqu&rsquo;\u00e0 ce que la limite soit lev\u00e9e.<\/li>\n<\/ul>\n<h2>Pourquoi est-il n\u00e9cessaire de limiter le d\u00e9bit ?<\/h2>\n<p>Il existe de nombreuses raisons pour lesquelles vous devez mettre en place une limitation de d\u00e9bit dans vos <a href=\"https:\/\/kinsta.com\/fr\/blog\/architecture-application-web\/\">API web<\/a>. Voici quelques-unes des principales raisons :<\/p>\n<h3>1. Protection de l&rsquo;acc\u00e8s aux ressources<\/h3>\n<p>La premi\u00e8re raison pour laquelle vous devriez envisager de mettre en place une limite de d\u00e9bit dans votre application est de prot\u00e9ger vos ressources contre la surexploitation par des utilisateurs mal intentionn\u00e9s. Les attaquants peuvent utiliser des techniques telles que les <a href=\"https:\/\/www.cloudflare.com\/learning\/ddos\/what-is-a-ddos-attack\/\" target=\"_blank\" rel=\"noopener noreferrer\">attaques DDoS<\/a> pour monopoliser l&rsquo;acc\u00e8s \u00e0 vos ressources et emp\u00eacher votre application de fonctionner normalement pour les autres utilisateurs. La mise en place d&rsquo;une limite de d\u00e9bit permet de s&rsquo;assurer que vous ne facilitez pas la t\u00e2che des attaquants qui veulent perturber vos API.<\/p>\n<h3>2. R\u00e9partition du quota entre les utilisateurs<\/h3>\n<p>Outre la protection de vos ressources, la limite de d\u00e9bit vous permet de r\u00e9partir les ressources de votre API entre les utilisateurs. Cela signifie que vous pouvez cr\u00e9er des mod\u00e8les de tarification \u00e9chelonn\u00e9s et r\u00e9pondre aux besoins dynamiques de vos clients sans que cela n&rsquo;affecte les autres clients.<\/p>\n<h3>3. Am\u00e9lioration de la rentabilit\u00e9<\/h3>\n<p>La limitation des d\u00e9bits \u00e9quivaut \u00e9galement \u00e0 la limitation des co\u00fbts. Cela signifie que vous pouvez r\u00e9partir judicieusement vos ressources entre vos utilisateurs. Avec une structure partitionn\u00e9e, il est plus facile d&rsquo;estimer les co\u00fbts n\u00e9cessaires \u00e0 l&rsquo;entretien du syst\u00e8me. Les \u00e9ventuels pics peuvent \u00eatre g\u00e9r\u00e9s intelligemment en provisionnant ou en d\u00e9classant la quantit\u00e9 ad\u00e9quate de ressources.<\/p>\n<h3>4. Gestion des flux entre les workers<\/h3>\n<p>De nombreuses API reposent sur une architecture distribu\u00e9e qui utilise plusieurs workers\/threads\/instances pour traiter les requ\u00eates entrantes. Dans une telle structure, vous pouvez utiliser des limites de d\u00e9bit pour contr\u00f4ler la charge de travail transmise \u00e0 chaque n\u0153ud de travail. Vous pouvez ainsi vous assurer que les n\u0153uds de travail re\u00e7oivent des charges de travail \u00e9quitables et durables. Vous pouvez facilement ajouter ou supprimer des workers en fonction des besoins sans avoir \u00e0 restructurer l&rsquo;ensemble de la passerelle API.<\/p>\n<h2>Comprendre les limites de rafale<\/h2>\n<p>Un autre moyen courant de contr\u00f4ler l&rsquo;utilisation de l&rsquo;API consiste \u00e0 d\u00e9finir une limite de rafale (\u00e9galement appel\u00e9e \u00ab throttling \u00bb) au lieu d&rsquo;une limite de d\u00e9bit. Les limites de rafale sont des limites de d\u00e9bit mises en \u0153uvre pour un tr\u00e8s petit intervalle de temps, par exemple quelques secondes. Par exemple, au lieu de fixer une limite de 1,3 million de requ\u00eates par mois, vous pouvez fixer une limite de 5 requ\u00eates par seconde. Bien que cela \u00e9quivaille au m\u00eame trafic mensuel, cela garantit que vos clients ne surchargent pas vos serveurs en envoyant des rafales de milliers de requ\u00eates \u00e0 la fois.<\/p>\n<p>Dans le cas des limites de rafales, les requ\u00eates sont souvent retard\u00e9es jusqu&rsquo;au prochain intervalle au lieu d&rsquo;\u00eatre refus\u00e9es. Il est \u00e9galement souvent recommand\u00e9 d&rsquo;utiliser \u00e0 la fois les limites de d\u00e9bit et les limites de rafale pour un contr\u00f4le optimal du trafic et de l&rsquo;utilisation.<\/p>\n<h2>3 M\u00e9thodes de mise en \u0153uvre de la limitation de d\u00e9bit<\/h2>\n<p>En ce qui concerne la mise en \u0153uvre, il existe quelques m\u00e9thodes que vous pouvez utiliser pour mettre en place une limitation de d\u00e9bit de l&rsquo;API dans votre application. Ces m\u00e9thodes sont les suivantes :<\/p>\n<h3>1. Files d&rsquo;attente de requ\u00eates<\/h3>\n<p>L&rsquo;une des m\u00e9thodes pratiques les plus simples pour limiter l&rsquo;acc\u00e8s \u00e0 l&rsquo;API consiste \u00e0 utiliser des files d&rsquo;attente de requ\u00eates. Les files d&rsquo;attente de requ\u00eates font r\u00e9f\u00e9rence \u00e0 un m\u00e9canisme dans lequel les requ\u00eates entrantes sont stock\u00e9es sous la forme d&rsquo;une file d&rsquo;attente et trait\u00e9es l&rsquo;une apr\u00e8s l&rsquo;autre jusqu&rsquo;\u00e0 une certaine limite.<\/p>\n<p>Un cas d&rsquo;utilisation courant des files d&rsquo;attente est la s\u00e9paration des requ\u00eates entrantes des utilisateurs gratuits et payants. Voici comment vous pouvez le faire dans une <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-express-js\/\">application Express<\/a> \u00e0 l&rsquo;aide du paquetage <code>express-queue<\/code>:<\/p>\n<pre><code class=\"language-js\">const express = require('express')\nconst expressQueue = require('express-queue');\n\nconst app = express()\n\nconst freeRequestsQueue = expressQueue({\n    activeLimit: 1, \/\/ Maximum requests to process at once\n    queuedLimit: -1 \/\/ Maximum requests allowed in queue (-1 means unlimited)\n});\n\nconst paidRequestsQueue = expressQueue({\n    activeLimit: 5, \/\/ Maximum requests to process at once\n    queuedLimit: -1 \/\/ Maximum requests allowed in queue (-1 means unlimited)\n});\n\n\/\/ Middleware that selects the appropriate queue handler based on the presence of an API token in the request\nfunction queueHandlerMiddleware(req, res, next) {\n    \/\/ Check if the request contains an API token\n    const apiToken = req.headers['api-token'];\n\n    if (apiToken && isValidToken(apiToken)) {\n        console.log(\"Paid request received\")\n        paidRequestsQueue(req, res, next);\n    } else {\n        console.log(\"Free request received\")\n        freeRequestsQueue(req, res, next);\n     }\n}\n\n\/\/ Add the custom middleware function to the route\napp.get('\/route', queueHandlerMiddleware, (req, res) =&gt; {\n    res.status(200).json({ message: \"Processed!\" })\n});\n\n\/\/ Check here is the API token is valid or not\nconst isValidToken = () =&gt; {\n    return true;\n}\n\napp.listen(3000);<\/code><\/pre>\n<h3>2. Throttling<\/h3>\n<p>Le throttling est une autre technique utilis\u00e9e pour contr\u00f4ler l&rsquo;acc\u00e8s aux API. Au lieu de couper l&rsquo;acc\u00e8s lorsqu&rsquo;un seuil est atteint, il se concentre sur l&rsquo;att\u00e9nuation des pics de trafic de l&rsquo;API en mettant en \u0153uvre de petits seuils pour de petites plages de temps. Au lieu d&rsquo;\u00e9tablir une limite de taux comme 3 millions d&rsquo;appels par mois, le throttling \u00e9tablit des limites de 10 appels par seconde. D\u00e8s qu&rsquo;un client envoie plus de 10 appels en une seconde, les requ\u00eates suivantes dans la m\u00eame seconde sont automatiquement limit\u00e9es, mais le client retrouve instantan\u00e9ment l&rsquo;acc\u00e8s \u00e0 l&rsquo;API dans la seconde suivante.<\/p>\n<p>Vous pouvez le mettre en \u0153uvre dans Express \u00e0 l&rsquo;aide du paquetage <code>express-throttle<\/code>. Voici un exemple d&rsquo;application Express qui montre comment configurer le throttling dans votre application :<\/p>\n<pre><code class=\"language-js\">const express = require('express')\nconst throttle = require('express-throttle')\n\nconst app = express()\n\nconst throttleOptions = {\n    \"rate\": \"10\/s\",\n    \"burst\": 5,\n    \"on_allowed\": function (req, res, next, bucket) {\n        res.set(\"X-Rate-Limit-Limit\", 10);\n        res.set(\"X-Rate-Limit-Remaining\", bucket.tokens);\n        next()\n    },\n    \"on_throttled\": function (req, res, next, bucket) {\n        \/\/ Notify client\n        res.set(\"X-Rate-Limit-Limit\", 10);\n        res.set(\"X-Rate-Limit-Remaining\", 0);\n        res.status(503).send(\"System overloaded, try again after a few seconds.\");\n    }\n}\n\n\/\/ Add the custom middleware function to the route\napp.get('\/route', throttle(throttleOptions), (req, res) =&gt; {\n    res.status(200).json({ message: \"Processed!\" })\n});\n\napp.listen(3000);<\/code><\/pre>\n<p>Vous pouvez tester l&rsquo;application \u00e0 l&rsquo;aide d&rsquo;un outil de test de charge comme <a href=\"https:\/\/www.npmjs.com\/package\/autocannon\" target=\"_blank\" rel=\"noopener noreferrer\">AutoCannon<\/a>. Vous pouvez installer AutoCannon en ex\u00e9cutant la commande suivante dans votre terminal :<\/p>\n<pre><code>npm install autocannon -g<\/code><\/pre>\n<p>Vous pouvez tester l&rsquo;application en utilisant ce qui suit :<\/p>\n<pre><code>autocannon http:\/\/localhost:3000\/route<\/code><\/pre>\n<p>Le test utilise 10 connexions simultan\u00e9es qui envoient des requ\u00eates \u00e0 l&rsquo;API. Voici le r\u00e9sultat du test :<\/p>\n<pre><code>Running 10s test @ http:\/\/localhost:3000\/route\n\n10 connections\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Stat    \u2502 2.5% \u2502 50%  \u2502 97.5% \u2502 99%  \u2502 Avg     \u2502 Stdev   \u2502 Max   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Latency \u2502 0 ms \u2502 0 ms \u2502 1 ms  \u2502 1 ms \u2502 0.04 ms \u2502 0.24 ms \u2502 17 ms \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Stat      \u2502 1%      \u2502 2.5%    \u2502 50%    \u2502 97.5%   \u2502 Avg    \u2502 Stdev   \u2502 Min     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Req\/Sec   \u2502 16591   \u2502 16591   \u2502 19695  \u2502 19903   \u2502 19144  \u2502 1044.15 \u2502 16587   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Bytes\/Sec \u2502 5.73 MB \u2502 5.73 MB \u2502 6.8 MB \u2502 6.86 MB \u2502 6.6 MB \u2502 360 kB  \u2502 5.72 MB \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nReq\/Bytes counts sampled once per second.\n# of samples: 11\n114 2xx responses, 210455 non 2xx responses\n211k requests in 11.01s, 72.6 MB read<\/code><\/pre>\n<p>\u00c9tant donn\u00e9 que seules 10 requ\u00eates par seconde \u00e9taient autoris\u00e9es (avec une rafale suppl\u00e9mentaire de 5 requ\u00eates), seules 114 requ\u00eates ont \u00e9t\u00e9 trait\u00e9es par l&rsquo;API, et les requ\u00eates restantes ont re\u00e7u un code d&rsquo;erreur 503 demandant d&rsquo;attendre un certain temps.<\/p>\n<h3>3. Algorithmes de limitation de d\u00e9bit<\/h3>\n<p>Bien que la limitation de d\u00e9bit semble \u00eatre un concept simple qui peut \u00eatre mis en \u0153uvre \u00e0 l&rsquo;aide d&rsquo;une file d&rsquo;attente, elle peut, en fait, \u00eatre mise en \u0153uvre de diff\u00e9rentes mani\u00e8res offrant divers avantages. Voici quelques algorithmes populaires utilis\u00e9s pour mettre en \u0153uvre la limitation de d\u00e9bit :<\/p>\n<h4>Algorithme \u00e0 fen\u00eatre fixe<\/h4>\n<p>L&rsquo;algorithme \u00e0 fen\u00eatre fixe est l&rsquo;un des algorithmes de limitation de d\u00e9bit les plus simples. Il limite le nombre de requ\u00eates pouvant \u00eatre trait\u00e9es dans un intervalle de temps fixe.<\/p>\n<p>Vous d\u00e9finissez un nombre fixe de requ\u00eates, disons 100, qui peuvent \u00eatre trait\u00e9es par le serveur API en une heure. Lorsque la 101\u00e8me requ\u00eate arrive, l&rsquo;algorithme refuse de la traiter. Lorsque l&rsquo;intervalle de temps est r\u00e9initialis\u00e9 (c&rsquo;est-\u00e0-dire dans l&rsquo;heure suivante), 100 autres requ\u00eates entrantes peuvent \u00eatre trait\u00e9es.<\/p>\n<p>Cet algorithme est simple \u00e0 mettre en \u0153uvre et fonctionne bien dans de nombreux cas o\u00f9 la limitation du d\u00e9bit c\u00f4t\u00e9 serveur est n\u00e9cessaire pour contr\u00f4ler la bande passante (contrairement \u00e0 la r\u00e9partition de la bande passante entre les utilisateurs). Cependant, il peut entra\u00eener un trafic\/traitement irr\u00e9gulier vers les limites de l&rsquo;intervalle de temps fix\u00e9. L&rsquo;algorithme de la fen\u00eatre coulissante est une meilleure alternative dans les cas o\u00f9 vous avez besoin d&rsquo;un traitement r\u00e9gulier.<\/p>\n<h4>Algorithme \u00e0 fen\u00eatre glissante<\/h4>\n<p>L&rsquo;algorithme \u00e0 fen\u00eatre glissante est une variante de l&rsquo;algorithme de la fen\u00eatre fixe. Au lieu d&rsquo;utiliser des intervalles de temps fixes pr\u00e9d\u00e9finis, cet algorithme utilise une fen\u00eatre temporelle mobile pour suivre le nombre de requ\u00eates trait\u00e9es et entrantes.<\/p>\n<p>Au lieu d&rsquo;examiner les intervalles de temps absolus (de 60 secondes chacun, par exemple), tels que 0s \u00e0 60s, 61s \u00e0 120s, et ainsi de suite, l&rsquo;algorithme \u00e0 fen\u00eatre glissante examine les 60s pr\u00e9c\u00e9dentes \u00e0 partir du moment o\u00f9 une requ\u00eate est re\u00e7ue. Supposons qu&rsquo;une requ\u00eate soit re\u00e7ue \u00e0 la 82\u00e8me seconde ; l&rsquo;algorithme comptera alors le nombre de requ\u00eates trait\u00e9es entre 22 et 82 secondes (au lieu de l&rsquo;intervalle absolu de 60 \u00e0 120 secondes) pour d\u00e9terminer si cette requ\u00eate peut \u00eatre trait\u00e9e ou non. Cela permet d&rsquo;\u00e9viter les situations dans lesquelles un grand nombre de requ\u00eates est trait\u00e9 \u00e0 la fois \u00e0 la 59\u00e8me et \u00e0 la 61\u00e8me seconde, ce qui surcharge le serveur pendant une tr\u00e8s courte p\u00e9riode.<\/p>\n<p>Cet algorithme permet de g\u00e9rer plus facilement le trafic en rafale, mais il peut \u00eatre plus difficile \u00e0 mettre en \u0153uvre et \u00e0 maintenir que l&rsquo;algorithme \u00e0 fen\u00eatre fixe.<\/p>\n<h4>Algorithme du seau de jetons<\/h4>\n<p>Dans cet algorithme, un seau fictif est rempli de jetons, et chaque fois que le serveur traite une requ\u00eate, un jeton est retir\u00e9 du seau. Lorsque le seau est vide, le serveur ne peut plus traiter de requ\u00eates. Les autres requ\u00eates sont retard\u00e9es ou refus\u00e9es jusqu&rsquo;\u00e0 ce que le seau soit \u00e0 nouveau rempli.<\/p>\n<p>Le seau de jetons est rempli \u00e0 un rythme fixe (appel\u00e9 taux de g\u00e9n\u00e9ration de jetons) et le nombre maximal de jetons pouvant \u00eatre stock\u00e9s dans le seau est \u00e9galement fixe (appel\u00e9 profondeur du seau).<\/p>\n<p>En contr\u00f4lant le taux de r\u00e9g\u00e9n\u00e9ration des jetons et la profondeur du seau, vous pouvez contr\u00f4ler le d\u00e9bit maximal de trafic autoris\u00e9 par l&rsquo;API. Le paquet <code>express-throttle<\/code> que vous avez vu pr\u00e9c\u00e9demment utilise l&rsquo;algorithme du seau de jetons pour limiter ou contr\u00f4ler le flux de trafic de l&rsquo;API.<\/p>\n<p>Le principal avantage de cet algorithme est qu&rsquo;il prend en charge le trafic en rafale tant qu&rsquo;il peut \u00eatre pris en compte dans la profondeur du seau. Ceci est particuli\u00e8rement utile pour le trafic impr\u00e9visible.<\/p>\n<h4>Algorithme du seau perc\u00e9<\/h4>\n<p>L&rsquo;algorithme du seau perc\u00e9 est un autre algorithme permettant de g\u00e9rer le trafic des API. Au lieu de maintenir une profondeur de seau qui d\u00e9termine le nombre de requ\u00eates pouvant \u00eatre trait\u00e9es dans un laps de temps donn\u00e9 (comme dans un seau de jetons), il autorise un flux fixe de requ\u00eates \u00e0 partir du seau, ce qui est analogue \u00e0 l&rsquo;\u00e9coulement r\u00e9gulier de l&rsquo;eau \u00e0 partir d&rsquo;un seau qui fuit.<\/p>\n<p>Dans ce cas, la profondeur du seau est utilis\u00e9e pour d\u00e9terminer le nombre de requ\u00eates qui peuvent \u00eatre mises en file d&rsquo;attente avant que le seau ne commence \u00e0 d\u00e9border, c&rsquo;est-\u00e0-dire \u00e0 refuser les requ\u00eates entrantes.<\/p>\n<p>Le seau perc\u00e9 promet un flux r\u00e9gulier de requ\u00eates et, contrairement au seau de jetons, ne g\u00e8re pas les pics de trafic.<\/p>\n<h2>Meilleures pratiques pour la limitation du d\u00e9bit de l&rsquo;API<\/h2>\n<p>Maintenant que vous savez ce qu&rsquo;est la limitation de d\u00e9bit de l&rsquo;API et comment elle est mise en \u0153uvre, voici quelques bonnes pratiques \u00e0 adopter. Voici quelques bonnes pratiques \u00e0 prendre en compte lors de sa mise en \u0153uvre dans votre application.<\/p>\n<h3>Proposez un niveau gratuit aux utilisateurs pour qu&rsquo;ils explorent vos services<\/h3>\n<p>Lorsque vous envisagez de mettre en place une limite de d\u00e9bit de l&rsquo;API, essayez toujours de proposer un niveau gratuit ad\u00e9quat que vos utilisateurs potentiels peuvent utiliser pour essayer votre API. Il n&rsquo;est pas n\u00e9cessaire d&rsquo;\u00eatre tr\u00e8s g\u00e9n\u00e9reux, mais cela doit \u00eatre suffisant pour leur permettre de tester confortablement votre API dans leur application de d\u00e9veloppement.<\/p>\n<p>Bien que les limites de d\u00e9bit de l&rsquo;API soient essentielles au maintien de la qualit\u00e9 de vos points de terminaison d&rsquo;API pour vos utilisateurs, un petit niveau gratuit non limit\u00e9 peut vous aider \u00e0 gagner de nouveaux utilisateurs.<\/p>\n<h3>D\u00e9terminez ce qui se passe en cas de d\u00e9passement de la limite de d\u00e9bit<\/h3>\n<p>Lorsqu&rsquo;un utilisateur d\u00e9passe la limite de d\u00e9bit de votre API, vous devez prendre certaines mesures pour garantir une exp\u00e9rience positive \u00e0 l&rsquo;utilisateur tout en prot\u00e9geant vos ressources. Voici quelques-unes des questions que vous devez poser et des consid\u00e9rations que vous devez prendre en compte :<\/p>\n<h4>Quel code d&rsquo;erreur et quel message vos utilisateurs verront-ils ?<\/h4>\n<p>La premi\u00e8re chose \u00e0 faire est d&rsquo;informer vos utilisateurs qu&rsquo;ils ont d\u00e9pass\u00e9 la limite fix\u00e9e pour le d\u00e9bit de l&rsquo;API. Pour ce faire, vous devez remplacer la r\u00e9ponse de l&rsquo;API par un message pr\u00e9d\u00e9fini qui explique le probl\u00e8me. <i>Il est important que le code d&rsquo;\u00e9tat de cette r\u00e9ponse soit 429 \u00ab\u00a0oo Many Requests<\/i> Il est \u00e9galement d&rsquo;usage d&rsquo;expliquer le probl\u00e8me dans le corps de la r\u00e9ponse. Voici un exemple de corps de r\u00e9ponse :<\/p>\n<pre><code class=\"language-js\">{\n    \"error\": \"Too Many Requests\",\n    \"message\": \"You have exceeded the set API rate limit of X requests per minute. Please try again in a few minutes.\",\n    \"retry_after\": 60\n}<\/code><\/pre>\n<p>L&rsquo;exemple de corps de r\u00e9ponse ci-dessus mentionne le nom et la description de l&rsquo;erreur et sp\u00e9cifie \u00e9galement une dur\u00e9e (g\u00e9n\u00e9ralement en secondes) apr\u00e8s laquelle l&rsquo;utilisateur peut r\u00e9essayer d&rsquo;envoyer des requ\u00eates. Un corps de r\u00e9ponse descriptif comme celui-ci aide les utilisateurs \u00e0 comprendre ce qui s&rsquo;est pass\u00e9 et pourquoi ils n&rsquo;ont pas re\u00e7u la r\u00e9ponse qu&rsquo;ils attendaient. Il leur permet \u00e9galement de savoir combien de temps ils doivent attendre avant d&rsquo;envoyer une autre requ\u00eate.<\/p>\n<h4>Les nouvelles requ\u00eates seront-elles limit\u00e9es ou compl\u00e8tement arr\u00eat\u00e9es ?<\/h4>\n<p>Un autre point de d\u00e9cision est de savoir ce qu&rsquo;il faut faire lorsque la limite de d\u00e9bit de l&rsquo;API est d\u00e9pass\u00e9e par un utilisateur. En g\u00e9n\u00e9ral, vous emp\u00eachez l&rsquo;utilisateur d&rsquo;interagir avec le serveur en renvoyant une r\u00e9ponse 429 Too Many Requests, comme vous l&rsquo;avez vu ci-dessus. Cependant, vous devriez \u00e9galement envisager une autre approche : le throttling.<\/p>\n<p>Au lieu de couper compl\u00e8tement l&rsquo;acc\u00e8s aux ressources du serveur, vous pouvez ralentir le nombre total de requ\u00eates que l&rsquo;utilisateur peut envoyer dans un certain laps de temps. Cette m\u00e9thode est utile lorsque vous souhaitez donner une petite tape sur les doigts \u00e0 vos utilisateurs tout en leur permettant de continuer \u00e0 travailler s&rsquo;ils r\u00e9duisent leur volume de requ\u00eates.<\/p>\n<h3>Envisagez la mise en cache et la coupure de circuit<\/h3>\n<p>Les limites de d\u00e9bit des API sont d\u00e9sagr\u00e9ables : elles emp\u00eachent vos utilisateurs d&rsquo;interagir avec vos services API et de les utiliser. C&rsquo;est particuli\u00e8rement grave pour les utilisateurs qui doivent effectuer des requ\u00eates similaires \u00e0 plusieurs reprises, comme l&rsquo;acc\u00e8s \u00e0 un ensemble de donn\u00e9es de pr\u00e9visions m\u00e9t\u00e9orologiques qui n&rsquo;est mis \u00e0 jour qu&rsquo;une fois par semaine ou la r\u00e9cup\u00e9ration d&rsquo;une liste d&rsquo;options pour un menu d\u00e9roulant qui pourrait \u00eatre modifi\u00e9 une fois par semaine. Dans ces cas, une approche intelligente consisterait \u00e0 mettre en place un syst\u00e8me de cache.<\/p>\n<p>La <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/cache\/cache-site\/#site-cache-expiration\">mise en cache<\/a> est une abstraction de stockage \u00e0 grande vitesse mise en \u0153uvre dans les cas o\u00f9 le volume d&rsquo;acc\u00e8s aux donn\u00e9es est \u00e9lev\u00e9, mais o\u00f9 les donn\u00e9es ne changent pas tr\u00e8s souvent. Au lieu d&rsquo;effectuer un appel d&rsquo;API susceptible d&rsquo;invoquer plusieurs services internes et d&rsquo;entra\u00eener de lourdes d\u00e9penses, vous pourriez mettre en cache les points de terminaison les plus fr\u00e9quemment utilis\u00e9s, de sorte que la deuxi\u00e8me requ\u00eate soit servie \u00e0 partir du cache statique, ce qui est g\u00e9n\u00e9ralement plus rapide, moins co\u00fbteux et peut r\u00e9duire la charge de travail de vos services principaux.<\/p>\n<p>Il peut \u00e9galement arriver que vous receviez un nombre anormalement \u00e9lev\u00e9 de requ\u00eates de la part d&rsquo;un utilisateur. M\u00eame apr\u00e8s avoir fix\u00e9 une limite de d\u00e9bit, ils atteignent constamment leur capacit\u00e9 et sont limit\u00e9s dans leur d\u00e9bit. Ce type de situation indique qu&rsquo;il existe un risque d&rsquo;abus de l&rsquo;API.<\/p>\n<p>Pour prot\u00e9ger vos services de la surcharge et maintenir une exp\u00e9rience uniforme pour le reste de vos utilisateurs, vous devez envisager de restreindre compl\u00e8tement l&rsquo;acc\u00e8s de l&rsquo;utilisateur suspect \u00e0 l&rsquo;API. C&rsquo;est ce qu&rsquo;on appelle la coupure de circuit, et bien qu&rsquo;elle semble similaire \u00e0 la limitation de d\u00e9bit, elle est g\u00e9n\u00e9ralement utilis\u00e9e lorsque le syst\u00e8me est confront\u00e9 \u00e0 une surcharge de requ\u00eates et a besoin de temps pour ralentir afin de retrouver sa qualit\u00e9 de service.<\/p>\n<h3>Surveillez de pr\u00e8s votre configuration<\/h3>\n<p>Bien que les limites de d\u00e9bit des API soient destin\u00e9es \u00e0 r\u00e9partir \u00e9quitablement vos ressources entre vos utilisateurs, elles peuvent parfois causer des probl\u00e8mes inutiles \u00e0 vos utilisateurs ou m\u00eame indiquer une activit\u00e9 suspecte.<\/p>\n<p>La mise en place d&rsquo;une <a href=\"https:\/\/kinsta.com\/fr\/blog\/application-surveillance-performance\/\">solution de surveillance robuste<\/a> pour votre API peut vous aider \u00e0 comprendre \u00e0 quelle fr\u00e9quence les limites de taux sont atteintes par vos utilisateurs, si vous devez ou non reconsid\u00e9rer les limites g\u00e9n\u00e9rales tout en gardant \u00e0 l&rsquo;esprit la charge de travail moyenne de vos utilisateurs et identifier les utilisateurs qui atteignent fr\u00e9quemment leurs limites (ce qui pourrait indiquer qu&rsquo;ils ont besoin d&rsquo;une augmentation prochaine de leurs limites ou qu&rsquo;ils doivent \u00eatre surveill\u00e9s pour toute activit\u00e9 suspecte). Dans tous les cas, une configuration de surveillance active vous aidera \u00e0 mieux comprendre l&rsquo;impact des limites de d\u00e9bit de votre API.<\/p>\n<h3>Mettez en \u0153uvre la limitation de d\u00e9bit \u00e0 plusieurs niveaux<\/h3>\n<p>La limitation de d\u00e9bit peut \u00eatre mise en \u0153uvre \u00e0 plusieurs niveaux (utilisateur, application ou syst\u00e8me). De nombreuses personnes commettent l&rsquo;erreur de d\u00e9finir des limites de d\u00e9bit \u00e0 un seul de ces niveaux et de s&rsquo;attendre \u00e0 ce qu&rsquo;elles couvrent tous les cas possibles. Bien qu&rsquo;il ne s&rsquo;agisse pas exactement d&rsquo;un anti-mod\u00e8le, cela peut s&rsquo;av\u00e9rer inefficace dans certains cas.<\/p>\n<p>Si les requ\u00eates entrantes surchargent l&rsquo;interface r\u00e9seau de votre syst\u00e8me, votre limitation de d\u00e9bit au niveau de l&rsquo;application risque de ne m\u00eame pas pouvoir optimiser les charges de travail. Il est donc pr\u00e9f\u00e9rable de d\u00e9finir les r\u00e8gles de limitation de d\u00e9bit \u00e0 plusieurs niveaux, de pr\u00e9f\u00e9rence dans les couches sup\u00e9rieures de votre architecture, afin d&rsquo;\u00e9viter la cr\u00e9ation de goulets d&rsquo;\u00e9tranglement.<\/p>\n<h2>Utilisation des limites de d\u00e9bit de l&rsquo;API<\/h2>\n<p>Dans cette section, vous apprendrez \u00e0 tester les limites de d\u00e9bit de l&rsquo;API pour un point de terminaison API donn\u00e9 et \u00e0 mettre en \u0153uvre un contr\u00f4le de l&rsquo;utilisation sur votre client afin de vous assurer que vous ne finirez pas par \u00e9puiser les limites de votre API distante.<\/p>\n<h3>Comment tester les limites de d\u00e9bit de l&rsquo;API<\/h3>\n<p>Pour identifier la limite de d\u00e9bit d&rsquo;une API, votre premi\u00e8re approche doit toujours \u00eatre de lire la documentation de l&rsquo;API afin de d\u00e9terminer si les limites ont \u00e9t\u00e9 clairement d\u00e9finies. Dans la plupart des cas, la documentation de l&rsquo;API vous indiquera la limite et la mani\u00e8re dont elle a \u00e9t\u00e9 mise en \u0153uvre. Vous ne devez recourir au \u00ab test \u00bb de la limite de taux de l&rsquo;API pour l&rsquo;identifier que si vous ne pouvez pas l&rsquo;identifier \u00e0 partir de la documentation de l&rsquo;API, de l&rsquo;assistance ou de la communaut\u00e9. En effet, tester une API pour trouver sa limite de d\u00e9bit signifie que vous finirez par \u00e9puiser votre limite de d\u00e9bit au moins une fois, ce qui peut entra\u00eener des co\u00fbts financiers et\/ou l&rsquo;indisponibilit\u00e9 de l&rsquo;API pendant une certaine dur\u00e9e.<\/p>\n<p>Si vous cherchez \u00e0 identifier manuellement la limite de d\u00e9bit, commencez par utiliser un outil de test d&rsquo;API simple comme Postman pour effectuer des requ\u00eates manuellement \u00e0 l&rsquo;API et voir si vous pouvez \u00e9puiser sa limite de d\u00e9bit. Si ce n&rsquo;est pas le cas, vous pouvez alors utiliser un outil de test de charge comme Autocannon ou Gatling pour simuler un grand nombre de requ\u00eates et voir combien de requ\u00eates sont trait\u00e9es par l&rsquo;API avant qu&rsquo;elle ne commence \u00e0 r\u00e9pondre avec un code d&rsquo;\u00e9tat 429.<\/p>\n<p>Une autre approche peut consister \u00e0 utiliser un outil de v\u00e9rification des limites de d\u00e9bit tel que celui d&rsquo;AppBrokers <code><a href=\"https:\/\/github.com\/AppBroker\/rate-limit-test-tool\" target=\"_blank\" rel=\"noopener noreferrer\">rate-limit-test-tool<\/a><\/code>. Des outils d\u00e9di\u00e9s comme celui-ci automatisent le processus pour vous et vous fournissent \u00e9galement une interface utilisateur pour analyser soigneusement les r\u00e9sultats du test.<\/p>\n<p>Toutefois, si vous n&rsquo;\u00eates pas s\u00fbr de la limite de d\u00e9bit d&rsquo;une API, vous pouvez toujours essayer d&rsquo;estimer vos besoins en termes de requ\u00eates et de d\u00e9finir des limites c\u00f4t\u00e9 client afin de vous assurer que le nombre de requ\u00eates de votre application ne d\u00e9passe pas ce chiffre. Vous apprendrez comment proc\u00e9der dans la section suivante.<\/p>\n<h3>Comment limiter les appels \u00e0 l&rsquo;API<\/h3>\n<p>Si vous faites des appels \u00e0 une API \u00e0 partir de votre code, vous voudrez peut-\u00eatre mettre en place un syst\u00e8me de throttling de votre c\u00f4t\u00e9 pour vous assurer que vous ne faites pas accidentellement trop d&rsquo;appels \u00e0 l&rsquo;API et que vous n&rsquo;\u00e9puisez pas votre limite d&rsquo;API. Il existe plusieurs fa\u00e7ons de proc\u00e9der. L&rsquo;une des plus courantes consiste \u00e0 utiliser la m\u00e9thode throttle de la biblioth\u00e8que utilitaire lodash.<\/p>\n<p>Avant de commencer \u00e0 limiter les appels \u00e0 l&rsquo;API, vous devez cr\u00e9er une API. Voici un exemple de code pour une API bas\u00e9e sur Node.js qui imprime dans la console le nombre moyen de requ\u00eates qu&rsquo;elle re\u00e7oit par minute :<\/p>\n<pre><code class=\"language-js\">const express = require('express');\nconst app = express();\n\n\/\/ maintain a count of total requests\nlet requestTotalCount = 0;\nlet startTime = Date.now();\n\n\/\/ increase the count whenever any request is received\napp.use((req, res, next) =&gt; {\n    requestTotalCount++;\n    next();\n});\n\n\/\/ After each second, print the average number of requests received per second since the server was started\nsetInterval(() =&gt; {\n    const elapsedTime = (Date.now() - startTime) \/ 1000;\n    const averageRequestsPerSecond = requestTotalCount \/ elapsedTime;\n    console.log(`Average requests per second: ${averageRequestsPerSecond.toFixed(2)}`);\n}, 1000);\n\napp.get('\/', (req, res) =&gt; {\n    res.send('Hello World!');\n});\n\napp.listen(3000, () =&gt; {\n    console.log('Server listening on port 3000!');\n});<\/code><\/pre>\n<p>Une fois cette application ex\u00e9cut\u00e9e, elle affichera le nombre moyen de requ\u00eates re\u00e7ues chaque seconde :<\/p>\n<pre><code>Average requests per second: 0\nAverage requests per second: 0\nAverage requests per second: 0<\/code><\/pre>\n<p>Ensuite, cr\u00e9ez un nouveau fichier JavaScript appel\u00e9 <b>test-throttle.js<\/b> et enregistrez-y le code suivant :<\/p>\n<pre><code class=\"language-js\">\/\/ function that calls the API and prints the response\nconst request = () =&gt; {\n    fetch('http:\/\/localhost:3000')\n    .then(r =&gt; r.text())\n    .then(r =&gt; console.log(r))\n}\n\n\/\/ Loop to call the request function once every 100 ms, i.e., 10 times per second\nsetInterval(request, 100)<\/code><\/pre>\n<p>Une fois que vous aurez ex\u00e9cut\u00e9 ce script, vous remarquerez que le nombre moyen de requ\u00eates pour le serveur s&rsquo;\u00e9l\u00e8ve \u00e0 pr\u00e8s de 10 :<\/p>\n<pre><code>Average requests per second: 9.87\nAverage requests per second: 9.87\nAverage requests per second: 9.88<\/code><\/pre>\n<p>Que se passerait-il si cette API n&rsquo;autorisait que 6 requ\u00eates par seconde, par exemple ? Vous souhaiteriez maintenir votre nombre moyen de requ\u00eates en dessous de ce chiffre. Toutefois, si votre client envoie une requ\u00eate en fonction d&rsquo;une activit\u00e9 de l&rsquo;utilisateur, comme le clic d&rsquo;un bouton ou un d\u00e9filement, il se peut que vous ne puissiez pas limiter le nombre de fois o\u00f9 l&rsquo;appel \u00e0 l&rsquo;API est d\u00e9clench\u00e9.<\/p>\n<p>La fonction <code>throttle()<\/code> de la biblioth\u00e8que <code>lodash<\/code> peut vous aider. Tout d&rsquo;abord, installez la biblioth\u00e8que en ex\u00e9cutant la commande suivante :<\/p>\n<pre><code>npm install lodash<\/code><\/pre>\n<p>Ensuite, mettez \u00e0 jour le fichier <b>test-throttle.js<\/b> pour qu&rsquo;il contienne le code suivant :<\/p>\n<pre><code class=\"language-js\">\/\/ import the lodash library\nconst { throttle } = require('lodash');\n\n\/\/ function that calls the API and prints the response\nconst request = () =&gt; {\n    fetch('http:\/\/localhost:3000')\n    .then(r =&gt; r.text())\n    .then(r =&gt; console.log(r))\n}\n\n\/\/ create a throttled function that can only be called once every 200 ms, i.e., only 5 times every second\nconst throttledRequest = throttle(request, 200)\n\n\/\/ loop this throttled function to be called once every 100 ms, i.e., 10 times every second\nsetInterval(throttledRequest, 100)<\/code><\/pre>\n<p>Maintenant, si vous regardez les journaux du serveur, vous verrez une sortie similaire :<\/p>\n<pre><code>Average requests per second: 4.74\nAverage requests per second: 4.80\nAverage requests per second: 4.83\n<\/code><\/pre>\n<p>Cela signifie que m\u00eame si votre application appelle la fonction <code>request<\/code> 10 fois par seconde, la fonction de throttling veille \u00e0 ce qu&rsquo;elle ne soit appel\u00e9e que 5 fois par seconde, ce qui vous permet de rester en dessous de la limite de d\u00e9bit. Voil\u00e0 comment vous pouvez mettre en place un throttling c\u00f4t\u00e9 client pour \u00e9viter d&rsquo;\u00e9puiser les limites de d\u00e9bit de l&rsquo;API.<\/p>\n<h2>Erreurs courantes li\u00e9es aux limites de d\u00e9bit des API<\/h2>\n<p>Lorsque vous travaillez avec des API \u00e0 d\u00e9bit limit\u00e9, vous pouvez rencontrer diverses r\u00e9ponses indiquant qu&rsquo;une limite de d\u00e9bit a \u00e9t\u00e9 d\u00e9pass\u00e9e. Dans la plupart des cas, vous recevrez le code d&rsquo;\u00e9tat 429 accompagn\u00e9 d&rsquo;un message similaire \u00e0 l&rsquo;un des suivants :<\/p>\n<ul>\n<li>Calls to this API have exceeded the rate limit<\/li>\n<li>API rate limit exceeded<\/li>\n<li>429 too many requests<\/li>\n<\/ul>\n<p>Toutefois, le message que vous recevez d\u00e9pend de l&rsquo;impl\u00e9mentation de l&rsquo;API que vous utilisez. Cette impl\u00e9mentation peut varier, et certaines API peuvent m\u00eame ne pas utiliser le code d&rsquo;\u00e9tat 429. Voici d&rsquo;autres types de codes d&rsquo;erreur et de messages relatifs \u00e0 la limite de d\u00e9bit que vous pouvez recevoir lorsque vous travaillez avec des API \u00e0 d\u00e9bit limit\u00e9 :<\/p>\n<ul>\n<li><b>403 Forbidden<\/b> ou <b>401 Unauthorized<\/b> : Certaines API peuvent commencer \u00e0 consid\u00e9rer vos requ\u00eates comme non autoris\u00e9es et vous refuser ainsi l&rsquo;acc\u00e8s \u00e0 la ressource<\/li>\n<li><b>503 Service Unavailable<\/b> ou <b>500 Internal Server Error <\/b>: Si une API est surcharg\u00e9e par des requ\u00eates entrantes, elle peut commencer \u00e0 envoyer des messages d&rsquo;erreur 5XX indiquant que le serveur n&rsquo;est pas en bonne sant\u00e9. Il s&rsquo;agit g\u00e9n\u00e9ralement d&rsquo;un probl\u00e8me temporaire qui est r\u00e9solu par le fournisseur de services en temps voulu.<\/li>\n<\/ul>\n<h2>Comment les principaux fournisseurs d&rsquo;API mettent-ils en \u0153uvre les limites de d\u00e9bit de l&rsquo;API ?<\/h2>\n<p>Lorsque vous d\u00e9finissez la limite de d\u00e9bit de votre API, il peut \u00eatre utile d&rsquo;examiner la mani\u00e8re dont certains des principaux fournisseurs d&rsquo;API proc\u00e8dent :<\/p>\n<ul>\n<li><b>Discord <\/b>: <a href=\"https:\/\/kinsta.com\/fr\/blog\/slack-vs-discord\/\">Discord<\/a> met en \u0153uvre la limitation de d\u00e9bit de deux mani\u00e8res : il existe une limite de d\u00e9bit globale de 50 requ\u00eates par seconde. Outre la limite globale, il existe \u00e9galement des limites de taux sp\u00e9cifiques aux routes que vous devez garder \u00e0 l&rsquo;esprit. Vous pouvez lire tout cela dans cette <a href=\"https:\/\/discord.com\/developers\/docs\/topics\/rate-limits\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a>. Lorsque la limite de taux est d\u00e9pass\u00e9e, vous recevez une r\u00e9ponse HTTP 429 avec une valeur <code>retry_after<\/code> que vous pouvez utiliser pour attendre avant d&rsquo;envoyer une autre requ\u00eate.<\/li>\n<li><b>Twitter <\/b>: Twitter a \u00e9galement des limites de taux sp\u00e9cifiques aux routes que vous pouvez trouver dans leur <a href=\"https:\/\/developer.twitter.com\/en\/docs\/twitter-api\/rate-limits\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a>. Une fois la limite de d\u00e9bit d\u00e9pass\u00e9e, vous recevrez une r\u00e9ponse HTTP 429 avec une valeur d&rsquo;en-t\u00eate <code>x-rate-limit-reset<\/code> qui vous indiquera quand vous pourrez reprendre l&rsquo;acc\u00e8s.<\/li>\n<li><b>Reddit <\/b>: Le wiki API archiv\u00e9 de Reddit indique que la limite d&rsquo;acc\u00e8s \u00e0 l&rsquo;API Reddit est de 60 requ\u00eates par minute (via OAuth2 uniquement). La r\u00e9ponse \u00e0 chaque appel \u00e0 l&rsquo;API Reddit renvoie les valeurs des en-t\u00eates <code>X-Ratelimit-Used<\/code>, <code>X-Ratelimit-Remaining<\/code>, et <code>X-Ratelimit-Reset<\/code>, ce qui vous permet de d\u00e9terminer quand la limite pourrait \u00eatre d\u00e9pass\u00e9e et de quelle mani\u00e8re<\/li>\n<li><b>Facebook <\/b>: Facebook fixe \u00e9galement des limites de d\u00e9bit bas\u00e9es sur les routes. Par exemple, les appels effectu\u00e9s \u00e0 partir d&rsquo;applications bas\u00e9es sur Facebook sont limit\u00e9s \u00e0 200 * (nombre d&rsquo;utilisateurs de l&rsquo;application) requ\u00eates par heure. Vous trouverez tous les d\u00e9tails <a href=\"https:\/\/developers.facebook.com\/docs\/graph-api\/overview\/rate-limiting\/\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>. Les r\u00e9ponses de l&rsquo;API Facebook contiendront un en-t\u00eate <code>X-App-Usage<\/code> ou <code>X-Ad-Account-Usage<\/code> pour vous aider \u00e0 comprendre quand votre utilisation sera limit\u00e9e.<\/li>\n<\/ul>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Lorsque vous cr\u00e9ez des API, il est essentiel d&rsquo;assurer un contr\u00f4le optimal du trafic. Si vous ne surveillez pas de pr\u00e8s la gestion de votre trafic, vous vous retrouverez rapidement avec une API surcharg\u00e9e et non fonctionnelle. Inversement, lorsque vous travaillez avec une API \u00e0 d\u00e9bit limit\u00e9, il est important de comprendre comment fonctionne la limitation du d\u00e9bit et comment vous devez utiliser l&rsquo;API pour garantir une disponibilit\u00e9 et une utilisation maximales.<\/p>\n<p>Dans ce guide, vous avez appris ce qu&rsquo;est la limitation de d\u00e9bit de l&rsquo;API, pourquoi elle est n\u00e9cessaire, comment elle peut \u00eatre mise en \u0153uvre et quelques bonnes pratiques que vous devez garder \u00e0 l&rsquo;esprit lorsque vous travaillez avec des limites de d\u00e9bit de l&rsquo;API.<\/p>\n<p>D\u00e9couvrez l&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications<\/a> de Kinsta et lancez votre prochain projet <a href=\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\">Node.js<\/a> d\u00e8s aujourd&rsquo;hui !<\/p>\n<p><i>Vous travaillez avec une API \u00e0 d\u00e9bit limit\u00e9 ? Ou vous avez mis en place une limitation de d\u00e9bit dans votre propre API ? Faites-nous en part dans les commentaires ci-dessous !<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les API sont un excellent moyen pour les applications logicielles de communiquer entre elles. Elles permettent aux applications logicielles d&rsquo;interagir et de partager des ressources ou &#8230;<\/p>\n","protected":false},"author":199,"featured_media":70480,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[953],"class_list":["post-70479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Limitation du d\u00e9bit de l&#039;API : Le guide ultime- Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l&#039;utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l&#039;API gr\u00e2ce \u00e0 ce guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Limitation du d\u00e9bit de l&#039;API : Le guide ultime\" \/>\n<meta property=\"og:description\" content=\"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l&#039;utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l&#039;API gr\u00e2ce \u00e0 ce guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-28T06:45:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:42:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l&#039;utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l&#039;API gr\u00e2ce \u00e0 ce guide.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Limitation du d\u00e9bit de l&rsquo;API : Le guide ultime\",\"datePublished\":\"2023-06-28T06:45:43+00:00\",\"dateModified\":\"2025-10-01T19:42:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\"},\"wordCount\":5440,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\",\"name\":\"Limitation du d\u00e9bit de l'API : Le guide ultime- Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg\",\"datePublished\":\"2023-06-28T06:45:43+00:00\",\"dateModified\":\"2025-10-01T19:42:37+00:00\",\"description\":\"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l'utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l'API gr\u00e2ce \u00e0 ce guide.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Limitation du d\u00e9bit de l&rsquo;API : Le guide ultime\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Limitation du d\u00e9bit de l'API : Le guide ultime- Kinsta\u00ae","description":"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l'utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l'API gr\u00e2ce \u00e0 ce guide.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/","og_locale":"fr_FR","og_type":"article","og_title":"Limitation du d\u00e9bit de l'API : Le guide ultime","og_description":"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l'utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l'API gr\u00e2ce \u00e0 ce guide.","og_url":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-06-28T06:45:43+00:00","article_modified_time":"2025-10-01T19:42:37+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l'utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l'API gr\u00e2ce \u00e0 ce guide.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Jeremy Holcombe","Dur\u00e9e de lecture estim\u00e9e":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Limitation du d\u00e9bit de l&rsquo;API : Le guide ultime","datePublished":"2023-06-28T06:45:43+00:00","dateModified":"2025-10-01T19:42:37+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/"},"wordCount":5440,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/","url":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/","name":"Limitation du d\u00e9bit de l'API : Le guide ultime- Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg","datePublished":"2023-06-28T06:45:43+00:00","dateModified":"2025-10-01T19:42:37+00:00","description":"Apprenez \u00e0 optimiser les performances, \u00e0 renforcer la s\u00e9curit\u00e9 et \u00e0 contr\u00f4ler l'utilisation de votre API. D\u00e9bloquez la puissance de la limitation des d\u00e9bits de l'API gr\u00e2ce \u00e0 ce guide.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/api-rate-limit-2.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/limitation-debit-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/fr\/sujets\/api\/"},{"@type":"ListItem","position":3,"name":"Limitation du d\u00e9bit de l&rsquo;API : Le guide ultime"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/70479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=70479"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/70479\/revisions"}],"predecessor-version":[{"id":70516,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/70479\/revisions\/70516"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/es"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/jp"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/translations\/fr"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70479\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/70480"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=70479"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=70479"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=70479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}