{"id":403,"date":"2026-05-22T15:58:56","date_gmt":"2026-05-22T13:58:56","guid":{"rendered":"https:\/\/eryann.fr\/?p=403"},"modified":"2026-05-22T15:58:58","modified_gmt":"2026-05-22T13:58:58","slug":"fiche-api-rest","status":"publish","type":"post","link":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/","title":{"rendered":"Fiche api rest"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">1. Introduction<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Les API REST occupent une place centrale dans les infrastructures modernes. Tu les retrouves dans les applications web, les outils DevOps, les solutions cloud, les logiciels m\u00e9tiers, les applications mobiles et les plateformes de cybers\u00e9curit\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans un BTS CIEL ou SIO, comprendre le fonctionnement d\u2019une API REST permet de :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>communiquer entre plusieurs applications ;<\/li>\n\n\n\n<li>automatiser des t\u00e2ches d\u2019administration ;<\/li>\n\n\n\n<li>superviser des \u00e9quipements ;<\/li>\n\n\n\n<li>interagir avec des services distants ;<\/li>\n\n\n\n<li>d\u00e9velopper des applications modernes ;<\/li>\n\n\n\n<li>s\u00e9curiser les \u00e9changes r\u00e9seau.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cette fiche t\u2019explique le fonctionnement d\u2019une API REST, les m\u00e9thodes HTTP principales, la structure des requ\u00eates et des r\u00e9ponses, ainsi que les outils utiles pour tester et d\u00e9panner une API sous Debian ou Ubuntu.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">2. Sommaire<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Introduction<\/li>\n\n\n\n<li>Sommaire<\/li>\n\n\n\n<li>Comprendre le fonctionnement d\u2019une API REST<\/li>\n\n\n\n<li>Installation des outils n\u00e9cessaires<\/li>\n\n\n\n<li>Synth\u00e8se Markdown pour ta fiche bristol<\/li>\n\n\n\n<li>Fichiers importants<\/li>\n\n\n\n<li>Exemple complet d\u2019API REST<\/li>\n\n\n\n<li>Comprendre les m\u00e9thodes HTTP<\/li>\n\n\n\n<li>Comprendre les codes de retour HTTP<\/li>\n\n\n\n<li>Tester une API REST avec curl<\/li>\n\n\n\n<li>Tester une API REST avec Postman<\/li>\n\n\n\n<li>Utiliser JSON dans les API REST<\/li>\n\n\n\n<li>S\u00e9curiser une API REST<\/li>\n\n\n\n<li>Pare-feu et ports r\u00e9seau<\/li>\n\n\n\n<li>Commandes utiles et d\u00e9pannage<\/li>\n\n\n\n<li>Logs et analyse des erreurs<\/li>\n\n\n\n<li>Cas concrets d\u2019utilisation<\/li>\n\n\n\n<li>Erreurs fr\u00e9quentes<\/li>\n\n\n\n<li>Bonnes pratiques<\/li>\n\n\n\n<li>Pour aller plus loin<\/li>\n\n\n\n<li>Liens utiles et ressources officielles<\/li>\n\n\n\n<li>Propositions de TP<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">3. Comprendre le fonctionnement d\u2019une API REST<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Une API REST permet \u00e0 plusieurs applications de communiquer via le protocole HTTP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le client envoie une requ\u00eate HTTP vers un serveur. Ensuite, le serveur r\u00e9pond g\u00e9n\u00e9ralement avec des donn\u00e9es au format JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tu peux voir REST comme une interface de communication standardis\u00e9e entre logiciels.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>un site web demande une liste d\u2019utilisateurs ;<\/li>\n\n\n\n<li>une application mobile r\u00e9cup\u00e8re des donn\u00e9es m\u00e9t\u00e9o ;<\/li>\n\n\n\n<li>un script Python envoie des mesures \u00e0 un serveur ;<\/li>\n\n\n\n<li>un outil de supervision interroge une API r\u00e9seau.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Architecture simplifi\u00e9e :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Client] ---&gt; HTTP\/HTTPS ---&gt; &#91;API REST] ---&gt; &#91;Base de donn\u00e9es]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Les API REST utilisent principalement :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTTP ou HTTPS ;<\/li>\n\n\n\n<li>JSON ;<\/li>\n\n\n\n<li>des URL structur\u00e9es ;<\/li>\n\n\n\n<li>des m\u00e9thodes HTTP.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple d\u2019URL :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;api.exemple.local\/utilisateurs\/15<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ici :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>https:\/\/<\/code> : protocole s\u00e9curis\u00e9 ;<\/li>\n\n\n\n<li><code>api.exemple.local<\/code> : serveur ;<\/li>\n\n\n\n<li><code>\/utilisateurs\/15<\/code> : ressource demand\u00e9e.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">4. Installation des outils n\u00e9cessaires<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Sous Debian ou Ubuntu, installe plusieurs outils utiles pour travailler avec les API REST.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de curl<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>curl<\/code> permet d\u2019envoyer des requ\u00eates HTTP directement depuis le terminal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update<br>sudo apt install curl<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication des commandes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>apt update<\/code> : met \u00e0 jour la liste des paquets disponibles.<\/li>\n\n\n\n<li><code>apt install curl<\/code> : installe le client HTTP curl.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de jq<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>jq<\/code> permet de lire et formater les r\u00e9ponses JSON.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install jq<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00e9rification des versions<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl --version<br>jq --version<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">5. Synth\u00e8se Markdown pour ta fiche bristol<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Synth\u00e8se Markdown pour ta fiche bristol<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># API REST<br><br>## Principe<br>Une API REST permet \u00e0 des applications de communiquer via HTTP\/HTTPS.<br><br>## M\u00e9thodes HTTP<br>- GET : lire des donn\u00e9es<br>- POST : cr\u00e9er<br>- PUT : modifier totalement<br>- PATCH : modifier partiellement<br>- DELETE : supprimer<br><br>## Formats<br>- JSON principalement<br><br>## Exemple GET<br>```bash<br>curl http:\/\/api.local\/users<br>```<br><br>## Exemple POST<br>```bash<br>curl -X POST http:\/\/api.local\/users \\<br>-H \"Content-Type: application\/json\" \\<br>-d '{\"nom\":\"alice\"}'<br>```<br><br>## Codes HTTP<br>- 200 : OK<br>- 201 : cr\u00e9\u00e9<br>- 400 : erreur client<br>- 401 : non authentifi\u00e9<br>- 403 : interdit<br>- 404 : introuvable<br>- 500 : erreur serveur<br><br>## S\u00e9curit\u00e9<br>- HTTPS obligatoire<br>- Authentification<br>- Validation des entr\u00e9es<br>- Limitation des acc\u00e8s<br><br>## Ports<br>- HTTP : 80<br>- HTTPS : 443<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">6. Fichiers importants<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00eame si une API REST ne poss\u00e8de pas toujours les m\u00eames fichiers selon la technologie utilis\u00e9e, certains emplacements reviennent tr\u00e8s souvent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">API Node.js \/ Express<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/var\/www\/api\/<br>\/var\/www\/api\/package.json<br>\/var\/www\/api\/server.js<br>\/var\/www\/api\/routes\/<br>\/var\/www\/api\/controllers\/<br>\/var\/www\/api\/middlewares\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">API Python Flask<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/api\/<br>\/opt\/api\/app.py<br>\/opt\/api\/requirements.txt<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration Nginx<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/nginx\/nginx.conf<br>\/etc\/nginx\/sites-available\/api.conf<br>\/etc\/nginx\/sites-enabled\/api.conf<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Logs syst\u00e8me<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/var\/log\/nginx\/access.log<br>\/var\/log\/nginx\/error.log<br>\/var\/log\/apache2\/access.log<br>\/var\/log\/apache2\/error.log<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">7. Exemple complet d\u2019API REST<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Voici un exemple minimal d\u2019API REST avec Python Flask.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install python3 python3-pip<br>pip3 install flask<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple complet<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>from flask import Flask, jsonify, request<br><br>app = Flask(__name__)<br><br>users = &#91;<br>    {\"id\": 1, \"nom\": \"alice\"},<br>    {\"id\": 2, \"nom\": \"bob\"}<br>]<br><br>@app.route(\"\/users\", methods=&#91;\"GET\"])<br>def get_users():<br>    return jsonify(users)<br><br>@app.route(\"\/users\", methods=&#91;\"POST\"])<br>def add_user():<br>    data = request.json<br>    users.append(data)<br>    return jsonify({\"message\": \"Utilisateur ajout\u00e9\"}), 201<br><br>@app.route(\"\/users\/&lt;int:user_id&gt;\", methods=&#91;\"DELETE\"])<br>def delete_user(user_id):<br>    global users<br>    users = &#91;u for u in users if u&#91;\"id\"] != user_id]<br>    return jsonify({\"message\": \"Utilisateur supprim\u00e9\"})<br><br>if __name__ == \"__main__\":<br>    app.run(host=\"0.0.0.0\", port=5000)<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">8. Comprendre les m\u00e9thodes HTTP<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">GET<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GET r\u00e9cup\u00e8re des informations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/localhost:5000\/users<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">POST<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">POST cr\u00e9e une nouvelle ressource.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST http:\/\/localhost:5000\/users \\<br>-H \"Content-Type: application\/json\" \\<br>-d '{\"id\":3,\"nom\":\"charlie\"}'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication des options<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-X POST<\/code> : force la m\u00e9thode HTTP POST.<\/li>\n\n\n\n<li><code>-H<\/code> : ajoute un en-t\u00eate HTTP.<\/li>\n\n\n\n<li><code>-d<\/code> : envoie des donn\u00e9es.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">PUT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PUT remplace compl\u00e8tement une ressource.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PATCH<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PATCH modifie uniquement certains champs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">DELETE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DELETE supprime une ressource.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X DELETE http:\/\/localhost:5000\/users\/3<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">9. Comprendre les codes de retour HTTP<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">200 OK<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La requ\u00eate fonctionne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">201 Created<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le serveur cr\u00e9e une ressource.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">400 Bad Request<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le client envoie une requ\u00eate invalide.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">401 Unauthorized<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le client doit s\u2019authentifier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">403 Forbidden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le serveur refuse l\u2019acc\u00e8s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">404 Not Found<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La ressource n\u2019existe pas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">500 Internal Server Error<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le serveur rencontre une erreur interne.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">10. Tester une API REST avec curl<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Requ\u00eate GET simple<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/localhost:5000\/users<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Afficher les en-t\u00eates HTTP<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -I http:\/\/localhost:5000\/users<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-I<\/code> : r\u00e9cup\u00e8re uniquement les en-t\u00eates HTTP.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Mode verbeux<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -v http:\/\/localhost:5000\/users<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pourquoi utiliser <code>-v<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cette option affiche :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>la connexion TCP ;<\/li>\n\n\n\n<li>les en-t\u00eates ;<\/li>\n\n\n\n<li>les n\u00e9gociations HTTP ;<\/li>\n\n\n\n<li>les \u00e9ventuelles erreurs SSL\/TLS.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Formater du JSON avec jq<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/localhost:5000\/users | jq<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">11. Tester une API REST avec Postman<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Postman permet de :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cr\u00e9er des requ\u00eates ;<\/li>\n\n\n\n<li>sauvegarder des tests ;<\/li>\n\n\n\n<li>automatiser des sc\u00e9narios ;<\/li>\n\n\n\n<li>tester des authentifications.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Sous Linux, tu peux installer Postman via Snap :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo snap install postman<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">12. Utiliser JSON dans les API REST<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Les API REST utilisent principalement JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{<br>  \"id\": 1,<br>  \"nom\": \"alice\",<br>  \"role\": \"admin\"<br>}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi JSON ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSON :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>reste l\u00e9ger ;<\/li>\n\n\n\n<li>se lit facilement ;<\/li>\n\n\n\n<li>fonctionne dans tous les langages modernes.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">13. S\u00e9curiser une API REST<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Utiliser HTTPS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HTTPS chiffre les \u00e9changes r\u00e9seau.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ports :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTTP : 80<\/li>\n\n\n\n<li>HTTPS : 443<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Ajouter une authentification<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e9thodes fr\u00e9quentes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API Key ;<\/li>\n\n\n\n<li>JWT ;<\/li>\n\n\n\n<li>OAuth2 ;<\/li>\n\n\n\n<li>Basic Auth.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Limiter les acc\u00e8s<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tu peux :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>filtrer les IP ;<\/li>\n\n\n\n<li>limiter le nombre de requ\u00eates ;<\/li>\n\n\n\n<li>utiliser un reverse proxy Nginx.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Valider les donn\u00e9es<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une API doit toujours :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>v\u00e9rifier les types ;<\/li>\n\n\n\n<li>filtrer les caract\u00e8res dangereux ;<\/li>\n\n\n\n<li>emp\u00eacher les injections SQL ;<\/li>\n\n\n\n<li>contr\u00f4ler les tailles de donn\u00e9es.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">14. Pare-feu et ports r\u00e9seau<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Autoriser HTTPS avec UFW<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 443\/tcp<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>allow<\/code> : autorise le trafic.<\/li>\n\n\n\n<li><code>443\/tcp<\/code> : ouvre HTTPS.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">API locale uniquement<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si l\u2019API reste locale, ne publie pas le port vers Internet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API locale : acc\u00e8s uniquement depuis <code>127.0.0.1<\/code><\/li>\n\n\n\n<li>API interne : acc\u00e8s LAN uniquement<\/li>\n\n\n\n<li>API publique : HTTPS obligatoire<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00e9rifier les ports ouverts<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ss -tulpn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-t<\/code> : TCP<\/li>\n\n\n\n<li><code>-u<\/code> : UDP<\/li>\n\n\n\n<li><code>-l<\/code> : ports en \u00e9coute<\/li>\n\n\n\n<li><code>-p<\/code> : processus<\/li>\n\n\n\n<li><code>-n<\/code> : mode num\u00e9rique<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">15. Commandes utiles et d\u00e9pannage<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Tester la connectivit\u00e9<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>ping serveur.local<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tester un port<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -vz serveur.local 443<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-v<\/code> : mode verbeux<\/li>\n\n\n\n<li><code>-z<\/code> : scan sans transfert<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Voir les requ\u00eates HTTP<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -v https:\/\/api.local<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00e9rifier les processus<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>ps aux | grep python<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00e9rifier les ports<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ss -tulpn<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tester TLS<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>openssl s_client -connect api.local:443<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">16. Logs et analyse des erreurs<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Logs Nginx<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/var\/log\/nginx\/access.log<br>\/var\/log\/nginx\/error.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Lecture en temps r\u00e9el<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tail -f \/var\/log\/nginx\/access.log<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explication<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tail -f<\/code> : affiche les nouvelles lignes en direct.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Que voit-on dans les logs ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans <code>access.log<\/code> :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IP source ;<\/li>\n\n\n\n<li>URL ;<\/li>\n\n\n\n<li>m\u00e9thode HTTP ;<\/li>\n\n\n\n<li>code retour ;<\/li>\n\n\n\n<li>navigateur ;<\/li>\n\n\n\n<li>temps de r\u00e9ponse.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dans <code>error.log<\/code> :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>erreurs PHP ;<\/li>\n\n\n\n<li>probl\u00e8mes proxy ;<\/li>\n\n\n\n<li>erreurs backend ;<\/li>\n\n\n\n<li>erreurs TLS.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Logs Flask<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si tu ex\u00e9cutes Flask manuellement :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 app.py<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le terminal affiche directement :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>les requ\u00eates ;<\/li>\n\n\n\n<li>les erreurs Python ;<\/li>\n\n\n\n<li>les codes HTTP.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Journalctl avec systemd<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo journalctl -u nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ou :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo journalctl -u apache2<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">17. Cas concrets d\u2019utilisation<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">API REST pour WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress expose une API REST :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;site.local\/wp-json\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl https:\/\/site.local\/wp-json\/wp\/v2\/posts<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Supervision r\u00e9seau<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un serveur r\u00e9cup\u00e8re :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00e9tat des \u00e9quipements ;<\/li>\n\n\n\n<li>m\u00e9triques ;<\/li>\n\n\n\n<li>alertes.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Domotique<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les objets connect\u00e9s utilisent souvent REST :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>capteurs ;<\/li>\n\n\n\n<li>cam\u00e9ras ;<\/li>\n\n\n\n<li>automates.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Cybers\u00e9curit\u00e9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les API REST servent aussi \u00e0 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>automatiser des scans ;<\/li>\n\n\n\n<li>r\u00e9cup\u00e9rer des IOC ;<\/li>\n\n\n\n<li>piloter des firewalls ;<\/li>\n\n\n\n<li>centraliser des logs.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">18. Erreurs fr\u00e9quentes<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Erreur 401<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cause :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>authentification absente ;<\/li>\n\n\n\n<li>token invalide.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Erreur 403<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cause :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>droits insuffisants ;<\/li>\n\n\n\n<li>filtrage IP.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Erreur 404<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cause :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mauvaise URL ;<\/li>\n\n\n\n<li>route inexistante.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Erreur 500<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cause :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>bug applicatif ;<\/li>\n\n\n\n<li>probl\u00e8me base de donn\u00e9es ;<\/li>\n\n\n\n<li>exception Python\/PHP.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">JSON invalide<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cause :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>virgule oubli\u00e9e ;<\/li>\n\n\n\n<li>guillemets incorrects ;<\/li>\n\n\n\n<li>structure invalide.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">19. Bonnes pratiques<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Utilise HTTPS syst\u00e9matiquement.<\/li>\n\n\n\n<li>Active les logs.<\/li>\n\n\n\n<li>Filtre les entr\u00e9es utilisateur.<\/li>\n\n\n\n<li>N\u2019expose jamais une API de test sur Internet.<\/li>\n\n\n\n<li>Limite les permissions.<\/li>\n\n\n\n<li>Documente les routes API.<\/li>\n\n\n\n<li>Utilise des codes HTTP coh\u00e9rents.<\/li>\n\n\n\n<li>S\u00e9pare environnement de d\u00e9veloppement et production.<\/li>\n\n\n\n<li>Place l\u2019API derri\u00e8re Nginx ou Apache.<\/li>\n\n\n\n<li>Surveille les erreurs et le trafic.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">20. Pour aller plus loin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Tu peux approfondir :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JWT ;<\/li>\n\n\n\n<li>OAuth2 ;<\/li>\n\n\n\n<li>GraphQL ;<\/li>\n\n\n\n<li>OpenAPI ;<\/li>\n\n\n\n<li>Swagger ;<\/li>\n\n\n\n<li>FastAPI ;<\/li>\n\n\n\n<li>s\u00e9curisation des API ;<\/li>\n\n\n\n<li>reverse proxy Nginx ;<\/li>\n\n\n\n<li>Docker pour APIs ;<\/li>\n\n\n\n<li>monitoring Prometheus\/Grafana.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">21. Liens utiles et ressources officielles<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation officielle HTTP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">RFC officielle HTTP :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc9110\">https:\/\/datatracker.ietf.org\/doc\/html\/rfc9110<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette RFC d\u00e9crit le fonctionnement moderne du protocole HTTP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation curl<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/curl.se\/docs\/manpage.html\">https:\/\/curl.se\/docs\/manpage.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La documentation officielle de curl d\u00e9taille toutes les options du client HTTP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation Flask<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/flask.palletsprojects.com\/en\/stable\">https:\/\/flask.palletsprojects.com\/en\/stable<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Documentation officielle du framework Flask utilis\u00e9 dans les exemples.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation Debian UFW<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wiki.debian.org\/Uncomplicated%20Firewall%20%28ufw%29\">https:\/\/wiki.debian.org\/Uncomplicated%20Firewall%20%28ufw%29<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette page explique la configuration du pare-feu UFW sous Debian.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation Ubuntu UFW<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/help.ubuntu.com\/community\/UFW\">https:\/\/help.ubuntu.com\/community\/UFW<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Guide Ubuntu officiel sur UFW.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation JSON<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.json.org\/json-fr.html\">https:\/\/www.json.org\/json-fr.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00e9sentation compl\u00e8te du format JSON.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OpenClassrooms \u2014 D\u00e9couvrez le fonctionnement des API REST<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/openclassrooms.com\/fr\/courses\/6224541-creez-des-api-restful-avec-python-et-flask\">https:\/\/openclassrooms.com\/fr\/courses\/6224541-creez-des-api-restful-avec-python-et-flask<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cours francophone progressif avec Flask et REST.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OpenClassrooms \u2014 Administrez un syst\u00e8me Linux<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/openclassrooms.com\/fr\/courses\/7170491-administrez-un-systeme-linux\">https:\/\/openclassrooms.com\/fr\/courses\/7170491-administrez-un-systeme-linux<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u00e8s utile pour comprendre les outils syst\u00e8me et r\u00e9seau utilis\u00e9s avec les API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mozilla Developer Network \u2014 HTTP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTTP\">https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTTP<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Excellente ressource p\u00e9dagogique sur HTTP et les m\u00e9thodes REST.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">22. Propositions de TP<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">TP 1 \u2014 Tester une API publique<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Objectif :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>utiliser curl ;<\/li>\n\n\n\n<li>lire du JSON ;<\/li>\n\n\n\n<li>comprendre HTTP.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Travail demand\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>interroger une API m\u00e9t\u00e9o ;<\/li>\n\n\n\n<li>r\u00e9cup\u00e9rer un JSON ;<\/li>\n\n\n\n<li>identifier les codes HTTP.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TP 2 \u2014 Cr\u00e9er une API Flask<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Objectif :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>d\u00e9velopper une API REST simple.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Travail demand\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cr\u00e9er une route GET ;<\/li>\n\n\n\n<li>ajouter une route POST ;<\/li>\n\n\n\n<li>retourner du JSON.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TP 3 \u2014 S\u00e9curiser une API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Objectif :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mettre en place HTTPS.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Travail demand\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>installer Nginx ;<\/li>\n\n\n\n<li>ajouter un reverse proxy ;<\/li>\n\n\n\n<li>ouvrir le port 443 avec UFW.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TP 4 \u2014 Analyser les logs API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Objectif :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>comprendre les journaux HTTP.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Travail demand\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>provoquer des erreurs 404 ;<\/li>\n\n\n\n<li>observer les logs ;<\/li>\n\n\n\n<li>identifier les IP sources ;<\/li>\n\n\n\n<li>analyser les codes HTTP.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TP 5 \u2014 Automatiser des appels API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Objectif :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>utiliser Bash ou Python.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Travail demand\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>envoyer automatiquement des requ\u00eates ;<\/li>\n\n\n\n<li>parser les r\u00e9ponses JSON ;<\/li>\n\n\n\n<li>sauvegarder les r\u00e9sultats dans un fichier.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction Les API REST occupent une place centrale dans les infrastructures modernes. Tu les retrouves dans les applications web, les outils DevOps, les solutions cloud, les logiciels m\u00e9tiers, les applications mobiles et les plateformes de cybers\u00e9curit\u00e9. Dans un BTS CIEL ou SIO, comprendre le fonctionnement d\u2019une API REST permet de : Cette fiche t\u2019explique [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[29,30,12,5],"tags":[],"class_list":["post-403","post","type-post","status-publish","format-standard","hentry","category-administration-systeme","category-api","category-linux","category-systeme"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fiche api rest - Eryann Breizh SecOps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fiche api rest - Eryann Breizh SecOps\" \/>\n<meta property=\"og:description\" content=\"1. Introduction Les API REST occupent une place centrale dans les infrastructures modernes. Tu les retrouves dans les applications web, les outils DevOps, les solutions cloud, les logiciels m\u00e9tiers, les applications mobiles et les plateformes de cybers\u00e9curit\u00e9. Dans un BTS CIEL ou SIO, comprendre le fonctionnement d\u2019une API REST permet de : Cette fiche t\u2019explique [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/\" \/>\n<meta property=\"og:site_name\" content=\"Eryann Breizh SecOps\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-22T13:58:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-22T13:58:58+00:00\" \/>\n<meta name=\"author\" content=\"wpadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"wpadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/\"},\"author\":{\"name\":\"wpadmin\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/person\\\/d2ee98d2385cd045ed4fe1c07ca320b5\"},\"headline\":\"Fiche api rest\",\"datePublished\":\"2026-05-22T13:58:56+00:00\",\"dateModified\":\"2026-05-22T13:58:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/\"},\"wordCount\":1469,\"publisher\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#organization\"},\"articleSection\":[\"Administration syst\u00e8me\",\"api\",\"Linux\",\"Syst\u00e8me\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/\",\"url\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/\",\"name\":\"Fiche api rest - Eryann Breizh SecOps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#website\"},\"datePublished\":\"2026-05-22T13:58:56+00:00\",\"dateModified\":\"2026-05-22T13:58:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/systeme\\\/fiche-api-rest\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/eryann.fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fiche api rest\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#website\",\"url\":\"https:\\\/\\\/eryann.fr\\\/\",\"name\":\"Eryann Breizh SecOps\",\"description\":\"Fiches techniques &amp; labs en syst\u00e8mes et r\u00e9seaux poor les \u00e9tudiants en BTS CEIL ET SIO\",\"publisher\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/eryann.fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#organization\",\"name\":\"Breizh Sec Ops\",\"url\":\"https:\\\/\\\/eryann.fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png\",\"contentUrl\":\"https:\\\/\\\/eryann.fr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png\",\"width\":1246,\"height\":229,\"caption\":\"Breizh Sec Ops\"},\"image\":{\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/eryann.fr\\\/#\\\/schema\\\/person\\\/d2ee98d2385cd045ed4fe1c07ca320b5\",\"name\":\"wpadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g\",\"caption\":\"wpadmin\"},\"sameAs\":[\"https:\\\/\\\/eryann.fr\"],\"url\":\"https:\\\/\\\/eryann.fr\\\/index.php\\\/author\\\/wpadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fiche api rest - Eryann Breizh SecOps","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:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/","og_locale":"fr_FR","og_type":"article","og_title":"Fiche api rest - Eryann Breizh SecOps","og_description":"1. Introduction Les API REST occupent une place centrale dans les infrastructures modernes. Tu les retrouves dans les applications web, les outils DevOps, les solutions cloud, les logiciels m\u00e9tiers, les applications mobiles et les plateformes de cybers\u00e9curit\u00e9. Dans un BTS CIEL ou SIO, comprendre le fonctionnement d\u2019une API REST permet de : Cette fiche t\u2019explique [&hellip;]","og_url":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/","og_site_name":"Eryann Breizh SecOps","article_published_time":"2026-05-22T13:58:56+00:00","article_modified_time":"2026-05-22T13:58:58+00:00","author":"wpadmin","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"wpadmin","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/#article","isPartOf":{"@id":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/"},"author":{"name":"wpadmin","@id":"https:\/\/eryann.fr\/#\/schema\/person\/d2ee98d2385cd045ed4fe1c07ca320b5"},"headline":"Fiche api rest","datePublished":"2026-05-22T13:58:56+00:00","dateModified":"2026-05-22T13:58:58+00:00","mainEntityOfPage":{"@id":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/"},"wordCount":1469,"publisher":{"@id":"https:\/\/eryann.fr\/#organization"},"articleSection":["Administration syst\u00e8me","api","Linux","Syst\u00e8me"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/","url":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/","name":"Fiche api rest - Eryann Breizh SecOps","isPartOf":{"@id":"https:\/\/eryann.fr\/#website"},"datePublished":"2026-05-22T13:58:56+00:00","dateModified":"2026-05-22T13:58:58+00:00","breadcrumb":{"@id":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/eryann.fr\/index.php\/systeme\/fiche-api-rest\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/eryann.fr\/"},{"@type":"ListItem","position":2,"name":"Fiche api rest"}]},{"@type":"WebSite","@id":"https:\/\/eryann.fr\/#website","url":"https:\/\/eryann.fr\/","name":"Eryann Breizh SecOps","description":"Fiches techniques &amp; labs en syst\u00e8mes et r\u00e9seaux poor les \u00e9tudiants en BTS CEIL ET SIO","publisher":{"@id":"https:\/\/eryann.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eryann.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/eryann.fr\/#organization","name":"Breizh Sec Ops","url":"https:\/\/eryann.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/eryann.fr\/#\/schema\/logo\/image\/","url":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png","contentUrl":"https:\/\/eryann.fr\/wp-content\/uploads\/2026\/05\/cropped-088112b9-fd28-4b18-b02d-4d9dded3e900-e1777846396685.png","width":1246,"height":229,"caption":"Breizh Sec Ops"},"image":{"@id":"https:\/\/eryann.fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/eryann.fr\/#\/schema\/person\/d2ee98d2385cd045ed4fe1c07ca320b5","name":"wpadmin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d71b4031c3d015de3ca68c137413277e548b331b07db0acf781b9379b798eb3e?s=96&d=mm&r=g","caption":"wpadmin"},"sameAs":["https:\/\/eryann.fr"],"url":"https:\/\/eryann.fr\/index.php\/author\/wpadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts\/403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/comments?post=403"}],"version-history":[{"count":1,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts\/403\/revisions"}],"predecessor-version":[{"id":404,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/posts\/403\/revisions\/404"}],"wp:attachment":[{"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/media?parent=403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/categories?post=403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eryann.fr\/index.php\/wp-json\/wp\/v2\/tags?post=403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}