Veille Technologique : stockage, traitement et diffusion des données au sein d'une application par le biais d'une API REST
Dans l'ère numérique actuelle, la gestion efficace des données est cruciale pour la réussite des applications modernes. Le stockage, le traitement et la diffusion des données constituent les piliers fondamentaux de tout système d'information performant. Dans cet article, nous vous proposons une veille technologique axée sur les meilleures pratiques, les outils de pointe et les tendances émergentes dans le domaine du stockage, du traitement et de la diffusion des données via une API REST.
Définition de ses thèmes de veille
Dans cet article, nous allons explorer en détail les aspects cruciaux du stockage, du traitement et de la diffusion des données dans une application moderne, en mettant un accent particulier sur l'utilisation des API REST. Les thèmes que nous aborderons sont conçus pour offrir une vue d'ensemble complète et approfondie des technologies et outils actuels qui façonnent le paysage des systèmes d'information.
- Stockage des Données
- Bases de données relationnelles et non relationnelles : Comparaison entre les systèmes de gestion de bases de données SQL et NoSQL.
- Solutions de stockage en cloud : Exploration des services de stockage cloud comme Amazon S3, Google Cloud Storage et Azure Blob Storage.
- Traitement des Données
- Traitement en temps réel vs traitement par batch : Avantages et inconvénients, et scénarios d'application.
- Diffusion des Données
- Conception et implémentation d'API REST : Principes REST, bonnes pratiques de conception d'API.
- Sécurisation des API : OAuth, JWT, et autres mécanismes de sécurité pour protéger les API.
- Cas d'Usage
- Études de cas : Exemples d'implémentations réussies de stockage, traitement et diffusion des données.
Définition d'une API REST
Une API REST, qu'est-ce que c'est ?
Une API REST (également appelée API RESTful) est une interface de programmation d'application (API ou API web) qui respecte les contraintes du style d'architecture REST et permet d'interagir avec les services web RESTful. L'architecture REST (Representational State Transfer) a été créée par l'informaticien Roy Fielding.
Qu'est-ce qu'une API ?
Une API est un ensemble de définitions et de protocoles qui facilite la création et l'intégration de logiciels d'applications. Elle est parfois considérée comme un contrat entre un fournisseur d'informations et un utilisateur d'informations, qui permet de définir le contenu demandé au consommateur (l'appel) et le contenu demandé au producteur (la réponse).
Cas d'utilisation d'une API
Par exemple, l'API conçue pour un service de météo peut demander à l'utilisateur de fournir un code postal et au producteur de renvoyer une réponse en deux parties : la première concernant la température maximale et la seconde la température minimale.
En d'autres termes, lorsque vous souhaitez interagir avec un ordinateur ou un système pour récupérer des informations ou exécuter une fonction, une API permet d'indiquer au système ce que vous attendez de lui, afin qu'il puisse comprendre votre demande et y répondre.
Vous pouvez vous représenter une API comme un médiateur entre les utilisateurs ou clients et les ressources ou services web auxquels ils souhaitent accéder.
Avantages des API
Pour une entreprise, c'est aussi une solution pour partager des ressources et des informations, tout en maintenant un certain niveau de sécurité, de contrôle et d'authentification, en déterminant qui est autorisé à accéder à quoi.
Autre avantage des API : vous n'avez pas besoin de connaître le fonctionnement exact de la mise en cache, c'est-à-dire de savoir comment vos ressources sont récupérées ni d'où elles proviennent.
Stockage des données
Bases de données relationnelles et non relationnelles : Comparaison entre les systèmes de gestion de bases de données SQL et NoSQL.
Les bases de données relationnelles, ou SQL, sont les plus anciennes et les plus établies des systèmes de gestion de bases de données (SGBD). Elles utilisent un modèle de données structuré basé sur des tables, où les relations entre les données sont définies par des clés primaires et étrangères. Les SGBD relationnels les plus connus incluent MySQL, PostgreSQL, et Microsoft SQL Server. Les avantages d'une base de données relationnelle sont :
- Intégrité des Données : Les contraintes d'intégrité et les transactions ACID (Atomicité, Cohérence, Isolation, Durabilité) assurent la fiabilité des données.
- Normes et Langage SQL : Le langage SQL est un standard bien défini, ce qui facilite les requêtes complexes et les manipulations de données.
- Relations entre Données : Les relations entre tables permettent de gérer des données fortement structurées et interconnectées.
Les inconvénients des bases de données relationnelles sont :
- Scalabilité : Les SGBD relationnels sont souvent difficiles à mettre à l'échelle horizontale (scaling out) en raison de leur architecture monolithique.
- Flexibilité : Le schéma fixe des bases de données relationnelles peut être contraignant pour des applications nécessitant une structure de données flexible et évolutive.
- Performance : Pour les grandes quantités de données ou les requêtes très complexes, les performances peuvent diminuer.
Imaginons une API REST pour une application de gestion de bibliothèque. Nous pourrions utiliser PostgreSQL pour stocker des informations sur les livres, les auteurs, et les emprunts :
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author_id INTEGER REFERENCES authors(id),
published_date DATE
);
CREATE TABLE authors (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
birthdate DATE
);
CREATE TABLE borrows (
id SERIAL PRIMARY KEY,
book_id INTEGER REFERENCES books(id),
user_id INTEGER,
borrow_date DATE,
return_date DATE
);
Les bases de données non relationnelles, ou NoSQL, sont conçues pour des besoins spécifiques qui dépassent les capacités des SGBD relationnels. Elles sont généralement classées en plusieurs catégories : bases de données clé-valeur, documentaires, en colonne, et graphes. MongoDB, Redis, et Cassandra sont parmi les plus populaires. Les avantages d'utiliser ce type de bases de données sont :
- Scalabilité Horizontale : Les bases NoSQL sont conçues pour être facilement évolutives en ajoutant des nœuds supplémentaires.
- Flexibilité du Schéma : Les structures de données flexibles permettent d'adapter rapidement le schéma aux besoins changeants de l'application.
- Performance : Optimisées pour des opérations de lecture/écriture à grande échelle et des charges de travail spécifiques.
Les inconvénients des bases de données non relationnelles :
- Absence de Transactions ACID : Certaines bases NoSQL n'offrent pas les garanties ACID, ce qui peut affecter la cohérence des données.
- Complexité des Requêtes : Les requêtes peuvent être moins expressives et plus complexes à gérer que le SQL standard.
- Standardisation : L'absence de normes unifiées peut compliquer l'intégration et la migration entre différentes bases NoSQL.
Pour la même application de gestion de bibliothèque, nous pourrions utiliser MongoDB pour sa flexibilité avec des documents JSON :
{
"_id": ObjectId("60db1c4f1c4e88a6c7f44b6b"),
"title": "1984",
"author": {
"name": "George Orwell",
"birthdate": "1903-06-25"
},
"published_date": "1949-06-08",
"borrows": [
{
"user_id": 1,
"borrow_date": "2024-01-15",
"return_date": "2024-01-30"
}
]
}
En conclusion, le choix entre une base de données relationnelle et non relationnelle dépend des spécificités du projet et des besoins de l'application.
Une base de données relationnelle (SQL) est idéale pour les applications nécessitant des transactions ACID, une forte intégrité des données, et des relations complexes. Par exemple, les systèmes financiers, les applications de gestion d'entreprise, et les sites de e-commerce avec des données structurées.
Une base de données non relationnelles (NoSQL) conviennent mieux aux applications nécessitant une grande flexibilité du schéma, une scalabilité horizontale, et des performances élevées pour des volumes massifs de données. Elles sont particulièrement adaptées pour les réseaux sociaux, les applications de big data, et les systèmes de recommandation.
En fin de compte, l'analyse des exigences spécifiques, ainsi que la compréhension des avantages et inconvénients de chaque type de base de données, permettront de faire un choix éclairé et d'optimiser la performance et la fiabilité d'une API REST.
Stockage en cloud : AWS S3, Google Cloud Storage et Azure Blob Storage
Le stockage en cloud est devenu un pilier essentiel de l'infrastructure informatique moderne. Des services tels qu'Amazon S3, Google Cloud Storage et Azure Blob Storage offrent des solutions flexibles, sécurisées et hautement évolutives pour stocker une grande variété de données, des simples fichiers aux données volumineuses des applications web et mobiles.
Amazon S3 (Simple Storage Service)
Amazon S3 est l'un des services de stockage en cloud les plus populaires et les plus largement utilisés. Il offre une capacité de stockage quasi illimitée et une disponibilité élevée, avec une durabilité garantie des données. S3 organise les données sous forme de "buckets" (ou seaux) et permet un accès facile via des API RESTful.
Avantages d'Amazon S3 :
- Scalabilité : Capacité à stocker un nombre illimité d'objets avec une évolutivité automatique.
- Sécurité : Fonctionnalités avancées de chiffrement, de gestion des accès et de conformité aux normes de sécurité.
- Intégration avec d'autres services AWS : Facilité d'intégration avec d'autres services cloud d'Amazon, comme AWS Lambda et Amazon CloudFront.
Google Cloud Storage
Google Cloud Storage est la solution de stockage en cloud de Google, offrant une haute disponibilité, une durabilité élevée et des performances rapides pour le stockage d'objets de toutes tailles. Il offre plusieurs classes de stockage pour répondre aux besoins spécifiques en matière de performance et de coût.
Avantages de Google Cloud Storage :
- Tarification Flexible : Options de tarification adaptées aux besoins, avec des classes de stockage à faible coût pour les données moins fréquemment consultées.
- Intégration Transparente avec Google Cloud Platform : Facilité d'intégration avec d'autres services Google Cloud Platform, tels que Google Compute Engine et Google Kubernetes Engine.
- Gestion des Données : Fonctionnalités avancées de gestion des données, y compris la gestion des versions, la conservation des données et la réplication multi-régions.
Azure Blob Storage
Azure Blob Storage est le service de stockage d'objets de Microsoft Azure, offrant une scalabilité illimitée et une intégration transparente avec d'autres services Azure. Il prend en charge divers types de données, y compris les objets, les fichiers et les disques virtuels, et offre une haute disponibilité et une durabilité des données.
Avantages d'Azure Blob Storage :
- Intégration avec l'Écosystème Azure : Facilité d'intégration avec d'autres services Azure, tels que Azure Functions et Azure Machine Learning.
- Options de Stockage : Différentes options de stockage pour répondre aux besoins spécifiques en matière de performance, de coût et de durabilité.
- Sécurité et Conformité : Fonctionnalités avancées de sécurité et de conformité, y compris le chiffrement des données au repos et en transit, ainsi que la conformité aux normes de l'industrie.
Implémentation dans une API REST
L'intégration de ces services de stockage en cloud dans une API REST est relativement simple, grâce à leurs API RESTful bien documentées. Les développeurs peuvent utiliser des bibliothèques cliente ou des SDK fournis par les fournisseurs de services cloud pour interagir avec ces services et gérer le stockage des données de manière transparente dans leurs applications.
En conclusion, les solutions de stockage en cloud telles qu'Amazon S3, Google Cloud Storage et Azure Blob Storage offrent des fonctionnalités puissantes et des performances élevées pour le stockage et la gestion des données dans le cloud. Leur intégration dans une API REST permet aux développeurs de créer des applications évolutives, sécurisées et hautement performantes, tout en bénéficiant de la flexibilité et de l'évolutivité du cloud.
Traitement des Données
Traitement en Temps Réel vs Traitement par Batch : Avantages et Inconvénients
Traitement en Temps Réel
Avantages :
- Réactivité instantanée : Le traitement en temps réel permet de traiter les données dès leur arrivée, offrant ainsi une réactivité instantanée aux événements.
- Prise de décision rapide : Les résultats du traitement en temps réel peuvent être utilisés pour prendre des décisions critiques en temps réel, ce qui est essentiel dans des domaines tels que la finance, les télécommunications et l'Internet des objets (IoT).
- Surveillance continue : Le traitement en temps réel permet une surveillance continue des flux de données, ce qui permet de détecter rapidement les anomalies et les tendances.
Inconvénients :
- Complexité de la mise en oeuvre : La mise en place d'un système de traitement en temps réel peut être complexe en raison de la nécessité de gérer les flux de données en continu et de garantir la fiabilité et la cohérence des résultats.
- Coût élevé : Les systèmes de traitement en temps réel nécessitent souvent des infrastructures hautement distribuées et des ressources informatiques importantes, ce qui peut entraîner des coûts élevés de mise en œuvre et de maintenance.
- Sensibilité aux pannes : Les systèmes de traitement en temps réel peuvent être sensibles aux pannes et aux goulets d'étranglement, ce qui peut entraîner des interruptions de service et des pertes de données.
Traitement par Batch
Avantages :
- Traitement Économique : Le traitement par batch permet de traiter de grandes quantités de données de manière économique en regroupant les opérations et en les exécutant en lot.
- Planification Flexible : Les opérations de traitement par batch peuvent être planifiées et exécutées à des moments opportuns, ce qui permet d'optimiser l'utilisation des ressources informatiques.
- Facilité de Gestion : Les systèmes de traitement par batch sont souvent plus faciles à gérer et à maintenir que les systèmes de traitement en temps réel, en raison de leur nature discrète et prévisible.
Inconvénients :
- Latence élevée : Le traitement par batch peut introduire une latence significative entre la réception des données et la disponibilité des résultats, ce qui peut ne pas être acceptable pour les applications nécessitant une réactivité instantanée.
- Limitations pour la prise de décision en Temps Réel : En raison de la latence introduite par le traitement par batch, il peut être difficile d'utiliser les résultats pour prendre des décisions critiques en temps réel, ce qui peut limiter leur utilité dans certains scénarios d'application.
Conclusion
Le choix entre le traitement en temps réel et le traitement par batch dépend des exigences spécifiques de l'application, notamment de la réactivité nécessaire, du volume et de la vélocité des données, ainsi que des contraintes de coût et de complexité de mise en œuvre.
Conception et Implémentation d'une API REST : Principes REST et bonnes pratiques
Principes REST
REST (Representational State Transfer) est une architecture de conception pour les systèmes distribués, particulièrement adaptée aux services web. Les API RESTful utilisent des méthodes HTTP standard (GET, POST, PUT, DELETE) pour interagir avec les ressources identifiées par des URI (Uniform Resource Identifier).
Principes Clés de REST :
-
Statelessness (Sans État) : Chaque requête de client au serveur doit contenir toutes les informations nécessaires pour comprendre et traiter la requête. Le serveur ne stocke aucune information de session entre les requêtes.
-
Uniform Interface (Interface Uniforme) : Une interface uniforme simplifie et décuple l'architecture du système. Elle repose sur quatre contraintes : identification des ressources, manipulation des ressources via des représentations, messages auto-descriptifs, et hypermedia comme le moteur de l'état de l'application (HATEOAS).
-
Client-Server Architecture (Architecture Client-Serveur) : La séparation des préoccupations permet d'améliorer la portabilité des clients et la scalabilité des serveurs.
-
Cacheability (Mise en Cache) : Les réponses doivent définir explicitement si elles sont cacheables pour améliorer l'efficacité réseau.
-
Layered System (Système en Couches) : L'architecture doit être composée de couches hiérarchiques pour améliorer la modularité du système.
-
Code on Demand (Optionnel) : Les serveurs peuvent étendre les fonctionnalités des clients en exécutant du code fourni par le serveur (par exemple, des scripts).
Bonnes Pratiques de Conception d'API
-
URI Clairs et Concis : Utilisez des URI clairs et concis qui reflètent les ressources qu'ils représentent. Par exemple, /books, /authors, /books/{id}.
-
Méthodes HTTP Appropriées : Utilisez les méthodes HTTP de manière appropriée :
- GET pour récupérer des ressources.
- POST pour créer de nouvelles ressources.
- PUT pour mettre à jour des ressources existantes.
- DELETE pour supprimer des ressources.
-
Statut HTTP Corrects : Retournez les codes de statut HTTP appropriés :
- 200 OK pour des requêtes réussies.
- 201 Created pour une ressource créée.
- 400 Bad Request pour des erreurs de requête du client.
- 404 Not Found pour des ressources introuvables.
- 500 Internal Server Error pour des erreurs serveur.
-
Versionnement de l'API : Incluez des versions dans vos URI pour gérer les mises à jour sans perturber les clients existants, par exemple /v1/books.
-
Documentation Complète : Fournissez une documentation complète et accessible pour que les développeurs puissent facilement comprendre et utiliser votre API.
Sécurisation des API : OAuth, JWT, et Autres Mécanismes de Sécurité pour Protéger les API
La sécurité des API est une préoccupation majeure dans le développement d'applications modernes, surtout lorsqu'elles exposent des données sensibles ou des fonctionnalités critiques. Plusieurs mécanismes de sécurité sont disponibles pour protéger les API contre les attaques et assurer l'authentification et l'autorisation appropriées des utilisateurs.
OAuth (Open Authorization)
OAuth est un protocole d'autorisation ouvert largement utilisé pour sécuriser les API en permettant à des applications tierces d'accéder aux ressources d'un utilisateur sans avoir besoin de ses identifiants. OAuth fonctionne en émettant des jetons d'accès temporaires (tokens) qui sont utilisés par les applications tierces pour accéder aux ressources protégées.
Avantages d'OAuth :
- Simplicité d'Utilisation : OAuth offre une manière standardisée et sécurisée d'autoriser l'accès aux ressources protégées.
- Contrôle des Autorisations : Les propriétaires de ressources peuvent contrôler précisément les autorisations accordées aux applications tierces.
- Prise en Charge de Scénarios Complexes : OAuth prend en charge différents flux d'autorisation adaptés à divers scénarios, comme l'authentification utilisateur, l'authentification d'application et l'accès de service à service.
Exemple d'Utilisation d'OAuth :
Supposons qu'une application tierce souhaite accéder aux données d'un utilisateur sur une plateforme de médias sociaux. L'utilisateur autorise l'application tierce en se connectant à son compte via le protocole OAuth. L'application reçoit ensuite un jeton d'accès qui lui permet d'accéder aux données de l'utilisateur sans avoir besoin de ses identifiants.
JWT (JSON Web Tokens)
JWT est un format ouvert et standardisé (RFC 7519) pour représenter les revendications de manière sécurisée entre deux parties. Les JWT sont généralement utilisés comme moyen de transport sécurisé pour les informations d'authentification entre le client et le serveur dans le cadre de l'authentification basée sur les tokens.
Avantages de JWT :
- Légèreté et Compacité : Les JWT sont compacts et auto-contenus, ce qui les rend faciles à transporter dans les en-têtes HTTP ou les cookies.
- Facilité d'Intégration : Les JWT peuvent être utilisés dans divers scénarios et langages de programmation grâce à leur support généralisé.
- Sécurité : Les JWT peuvent être signés et cryptés pour garantir l'intégrité et la confidentialité des informations qu'ils transportent.
Exemple d'Utilisation de JWT :
Après qu'un utilisateur se soit authentifié avec succès, le serveur génère un JWT signé qui est renvoyé au client. Le client peut ensuite inclure ce JWT dans les en-têtes HTTP de ses requêtes subséquentes pour prouver son identité et accéder aux ressources protégées sur le serveur.
Autres Mécanismes de Sécurité
Outre OAuth et JWT, d'autres mécanismes de sécurité sont souvent utilisés pour protéger les API :
- Authentification de Base (Basic Authentication) : Un mécanisme d'authentification simple où les identifiants de l'utilisateur sont envoyés avec chaque requête HTTP.
- Authentification par Jeton (Token-based Authentication) : Les jetons d'accès sont utilisés pour authentifier les utilisateurs et leur donner accès aux ressources protégées.
- Autorisation basée sur les Rôles (Role-based Authorization) : Les utilisateurs sont autorisés à accéder à certaines ressources en fonction de leurs rôles et privilèges.
- Chiffrement des Communications (Encryption) : Le chiffrement des données en transit et au repos assure la confidentialité et l'intégrité des informations échangées entre le client et le serveur.
Exemple d'Utilisation d'Authentification par Jeton :
Une fois qu'un utilisateur s'est connecté avec succès à l'application, le serveur génère un jeton d'accès JWT qui est renvoyé au client. Le client doit inclure ce jeton dans les en-têtes de toutes les requêtes subséquentes pour accéder aux ressources protégées sur le serveur.
Implémentation dans une API REST : L'implémentation de la sécurité des API dans une API REST implique la configuration de stratégies d'authentification et d'autorisation appropriées, ainsi que l'intégration de mécanismes de sécurité comme OAuth, JWT ou d'autres méthodes en fonction des besoins spécifiques de l'application. En garantissant une sécurité robuste des API, les développeurs peuvent protéger les données sensibles et offrir une expérience utilisateur sécurisée et fiable.
Cas d'usage
Stockage des Données
Sur notre plateforme de blog, MongoDB est utilisé pour stocker les articles, les commentaires et les utilisateurs. Chaque article est enregistré dans une collection MongoDB avec des champs tels que le titre, le contenu, la date de publication et l'auteur. Les commentaires sont stockés dans une collection distincte liée à l'article correspondant, permettant ainsi une récupération rapide et efficace des données.
Traitement des Données
Pour le traitement des données, Express.js est utilisé pour créer une API REST qui gère les opérations CRUD (Create, Read, Update, Delete) sur les articles, les commentaires et les utilisateurs. Par exemple, des endpoints sont définis pour créer un nouvel article, récupérer la liste des articles, ajouter un commentaire à un article, etc. Express.js gère les requêtes HTTP et les interactions avec la base de données MongoDB de manière efficace.
Diffusion des Données
La diffusion des données se fait via les endpoints de l'API REST créés avec Express.js. Lorsqu'un utilisateur accède à la plateforme de blog via l'interface utilisateur, des requêtes HTTP sont envoyées aux endpoints appropriés pour récupérer les données nécessaires. Par exemple, une requête GET est envoyée à l'endpoint "/articles" pour récupérer la liste des articles, tandis qu'une requête POST est envoyée à l'endpoint "/articles/{id}/comments" pour ajouter un commentaire à un article spécifique.
Exemple d'Utilisation
Supposons qu'un utilisateur souhaite créer un nouvel article sur la plateforme de blog. L'utilisateur envoie une requête POST à l'endpoint "/articles" avec les détails de l'article, tels que le titre et le contenu. Express.js crée un nouveau document dans la collection MongoDB "articles" avec les informations fournies. L'utilisateur peut ensuite accéder à l'article via l'interface utilisateur de la plateforme de blog.
Conclusion de la veille technologique
Dans cet article résumant ma veille technologique, nous avons exploré les différentes facettes de la mise en œuvre du stockage, du traitement et de la diffusion des données au sein d'une application à l'aide d'une API REST. Nous avons examiné diverses technologies et concepts, des bases de données relationnelles et non relationnelles à la conception d'API REST et à la sécurisation des données.
Nous avons vu comment des technologies peuvent être utilisées pour répondre aux besoins spécifiques de stockage et de traitement des données. Nous avons également discuté des bonnes pratiques de conception d'API REST, telles que l'utilisation de JWT pour l'authentification et l'autorisation.
Si cet article vous a plu, je vous conseille de lire plus d'articles sur les API REST et notament sur les notions suivantes que j'ai pas eu le temps d'aborder dans cette syntèse. Les sujets que je vous conseile sont :
- Meilleures pratiques de sécurité des données : Chiffrement, contrôle d'accès, et conformité réglementaire.
- Performances et scalabilité des API : Techniques de mise en cache, équilibrage de charge et gestion des limites de taux.
Merci d'avoir lu jusqu'ici, Marc
Sources
-
Définition d'une API REST
-
Bases de données relationnelles et non relationnelles
- https://medium.com/@aristela.marku/relational-vs-non-relational-databases-e152b44dc6d0
- https://www.mongodb.com/resources/compare/relational-vs-non-relational-databases
- https://aws.amazon.com/fr/compare/the-difference-between-relational-and-non-relational-databases/
- https://stackoverflow.com/questions/2357239/non-relational-databases-nosql-for-small-to-medium-sized-applications
-
Solutions de stockage en cloud : Exploration des services de stockage cloud comme Amazon S3, Google Cloud Storage et Azure Blob Storage.
- https://medium.com/@richard_64931/storage-service-comparison-aws-vs-azure-vs-gcp-f7b606040302
- https://medium.com/@shimo164/compare-archive-storage-classes-in-aws-gcp-and-azure-b7d127ea1072
- https://aws.amazon.com/fr/s3/
- https://cloud.google.com/storage
- https://azure.microsoft.com/en-us/products/storage/blobs/
-
Real time processing vs Batch Processing
-
Conception et implémentation d'API REST
- https://medium.com/@techworldwithmilan/rest-api-design-best-practices-2eb5e749d428
- https://medium.com/javarevisited/10-rest-api-best-practices-explained-in-10-minutes-2a8040eec5db
- https://betterprogramming.pub/restful-api-design-step-by-step-guide-2f2c9f9fcdbf
- https://dev.to/ishant14/rest-api-design-best-practices-3l5a
- https://www.freecodecamp.org/news/rest-api-best-practices-rest-endpoint-design-examples/
-
Sécurisation des API