{"id":1013,"date":"2026-04-28T13:47:03","date_gmt":"2026-04-28T13:47:03","guid":{"rendered":"https:\/\/pythonia.fr\/?page_id=1013"},"modified":"2026-04-28T14:15:35","modified_gmt":"2026-04-28T14:15:35","slug":"elementor-1013","status":"publish","type":"page","link":"https:\/\/pythonia.fr\/index.php\/elementor-1013\/","title":{"rendered":"Elementor #1013"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1013\" class=\"elementor elementor-1013\">\n\t\t\t\t<div class=\"elementor-element elementor-element-39964a2 e-grid e-con-boxed e-con e-parent\" data-id=\"39964a2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-874be89 elementor-widget elementor-widget-heading\" data-id=\"874be89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Cr\u00e9er des API avec Python<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dca03e6 e-flex e-con-boxed e-con e-parent\" data-id=\"dca03e6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a86cf44 elementor-widget elementor-widget-heading\" data-id=\"a86cf44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><div style=\"display:flex;gap:40px;flex-wrap:wrap\">\n  <!-- Colonne gauche : Contenu -->\n  <div style=\"flex:2;min-width:300px\">\n    <h3 style=\"font-size:16px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">Objectifs<\/h3>\n    <ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n      <li>Ma\u00eetriser les principes REST et concevoir des API robustes avec FastAPI<\/li>\n      <li>Valider et s\u00e9curiser les donn\u00e9es avec Pydantic et l'authentification JWT<\/li>\n      <li>Connecter une API \u00e0 une base de donn\u00e9es et exposer un mod\u00e8le d'IA en production<\/li>\n    <\/ul>\n  <\/div>\n  <!-- Colonne droite : Liens et boutons -->\n  <div style=\"flex:1;min-width:200px;background:#0B1D33;padding:25px;border-radius:12px;height:fit-content\">\n    <div style=\"padding:12px 0;border-bottom:1px solid #1a3a5c\">\n      <span style=\"color:#8899AA;font-size:12px;text-transform:uppercase;letter-spacing:0.5px\">Tarif inter \/ participant<\/span>\n      <div style=\"color:#FFFFFF;font-size:22px;font-weight:bold;margin-top:4px\">\n        1 950 \u20ac <span style=\"font-size:13px;font-weight:normal;color:#8899AA\">HT<\/span>\n      <\/div>\n    <\/div>\n    <a href=\"http:\/\/pythonia.fr\/wp-content\/uploads\/2026\/04\/Programme_Cloud_2_FastAPI_Pythonia.pdf\" target=\"_blank\" style=\"display:block;color:#FFFFFF;font-size:15px;text-decoration:none;padding:12px 0;border-bottom:1px solid #1a3a5c\">\n      \ud83d\udcc4 Programme (PDF)\n    <\/a>\n    <a href=\"#\" id=\"btn-dates\" style=\"display:block;color:#FFFFFF;font-size:15px;text-decoration:none;padding:12px 0;border-bottom:1px solid #1a3a5c\">\n      \ud83d\udcc5 Voir les dates\n    <\/a>\n    <button id=\"btn-contact\" style=\"display:block;width:100%;margin-top:20px;padding:15px 20px;background:#5DADE2;color:#FFFFFF;font-size:15px;font-weight:bold;border:none;border-radius:8px;cursor:pointer\">\n      \u2709\ufe0f Demande d'information\n    <\/button>\n  <\/div>\n<\/div><\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40502fe e-grid e-con-boxed e-con e-parent\" data-id=\"40502fe\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e67ae35 elementor-widget elementor-widget-heading\" data-id=\"e67ae35\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><h3 style=\"font-size:24px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">Public vis\u00e9<\/h3>\n<ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n  <li>D\u00e9veloppeurs Python<\/li>\n  <li>Data scientists et ML engineers<\/li>\n  <li>Profils techniques en ESN ou cabinets de conseil<\/li>\n<\/ul>\n\n<h3 style=\"font-size:24px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">Pr\u00e9requis<\/h3>\n<ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n  <li>Ma\u00eetrise de Python interm\u00e9diaire (fonctions, classes, d\u00e9corateurs, gestion d'exceptions)<\/li>\n  <li>Bases du typage Python (type hints) et notions de HTTP (m\u00e9thodes, codes de statut)<\/li>\n  <li>Aisance avec Git et la ligne de commande<\/li>\n<\/ul>\n\n<h3 style=\"font-size:24px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">M\u00e9thodes p\u00e9dagogiques<\/h3>\n<ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n  <li>Apports th\u00e9oriques : expos\u00e9s interactifs avec sch\u00e9mas et cas concrets<\/li>\n  <li>Live coding : construction progressive d'une API r\u00e9elle tout au long des 3 jours<\/li>\n  <li>P\u00e9dagogie par la pratique : 70 % du temps consacr\u00e9 \u00e0 la mise en pratique<\/li>\n  <li>P\u00e9dagogie par l'erreur : analyse des anti-patterns fr\u00e9quents en production<\/li>\n  <li>Projet fil rouge : chaque participant construit une API compl\u00e8te et d\u00e9ploy\u00e9e<\/li>\n  <li>Support de cours et template FastAPI production-ready remis aux stagiaires<\/li>\n  <li>QCM mi-parcours (25 questions) et QCM final (30 questions) avec pr\u00e9sentation du projet<\/li>\n<\/ul>\n\n<h1 style=\"font-size:24px;color:#FFFFFF;font-weight:bold;margin-bottom:20px\">Programme d\u00e9taill\u00e9<\/h1>\n\n<h3 style=\"font-size:16px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">Jour 1 \u2014 Fondamentaux REST et premiers endpoints FastAPI<\/h3>\n<ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n  <li>Rappels REST : ressources, m\u00e9thodes HTTP, codes de statut<\/li>\n  <li>Bonnes pratiques de design d'API : nommage, versioning, pagination<\/li>\n  <li>Pourquoi FastAPI : comparaison avec Flask et Django REST Framework<\/li>\n  <li>Installation et structure d'un projet FastAPI<\/li>\n  <li>Premier endpoint GET : route, path parameters, query parameters<\/li>\n  <li>Endpoints POST, PUT, DELETE : corps de requ\u00eate<\/li>\n  <li>Organisation du code : routers, modules, structure recommand\u00e9e<\/li>\n  <li>Introduction \u00e0 Pydantic v2 : mod\u00e8les, types, validation automatique<\/li>\n  <li>Validateurs personnalis\u00e9s : field_validator, model_validator<\/li>\n  <li>R\u00e9ponses typ\u00e9es avec response_model<\/li>\n  <li>Gestion des erreurs : HTTPException, handlers personnalis\u00e9s<\/li>\n  <li>Codes de statut HTTP : 201, 204, 400, 404, 422, 500<\/li>\n  <li>Documentation automatique OpenAPI : Swagger UI et ReDoc<\/li>\n  <li>Enrichir la doc : summary, description, tags, examples<\/li>\n<\/ul>\n\n<h3 style=\"font-size:16px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">Jour 2 \u2014 Base de donn\u00e9es, s\u00e9curit\u00e9 et asynchrone<\/h3>\n<ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n  <li>Panorama des ORM : SQLAlchemy 2.0, SQLModel, Tortoise ORM<\/li>\n  <li>Configuration d'une base PostgreSQL locale et cloud<\/li>\n  <li>Mise en place de SQLAlchemy 2.0 avec FastAPI<\/li>\n  <li>Dependency injection : Depends pour la session de base de donn\u00e9es<\/li>\n  <li>Op\u00e9rations CRUD compl\u00e8tes avec une base relationnelle<\/li>\n  <li>Migrations de sch\u00e9ma avec Alembic : principes et premier cas<\/li>\n  <li>Mode asynchrone avec asyncpg et SQLAlchemy async<\/li>\n  <li>Transactions et gestion d'erreurs au niveau de la base<\/li>\n  <li>Authentification : API Key, OAuth2 Password Bearer<\/li>\n  <li>JWT (JSON Web Token) : g\u00e9n\u00e9ration, validation, refresh<\/li>\n  <li>D\u00e9pendances de s\u00e9curit\u00e9 : patterns r\u00e9utilisables<\/li>\n  <li>CORS : comprendre et configurer correctement<\/li>\n  <li>Async en Python : principes, async \/ await dans FastAPI<\/li>\n  <li>Tests de charge : wrk, Locust, mesure de concurrence<\/li>\n<\/ul>\n\n<h3 style=\"font-size:16px;color:#FFFFFF;font-weight:bold;margin-top:25px;margin-bottom:10px\">Jour 3 \u2014 Exposer des mod\u00e8les IA, tests et d\u00e9ploiement<\/h3>\n<ul style=\"font-size:14px;color:#FFFFFF;line-height:1.8;margin-left:20px\">\n  <li>Exposer un mod\u00e8le de ML via une API FastAPI<\/li>\n  <li>Chargement du mod\u00e8le au d\u00e9marrage : lifespan events<\/li>\n  <li>Endpoint de pr\u00e9diction : validation d'entr\u00e9e, r\u00e9ponse typ\u00e9e<\/li>\n  <li>Cas pratique : exposer un mod\u00e8le scikit-learn ou HuggingFace<\/li>\n  <li>Int\u00e9gration d'une API LLM externe (OpenAI, Claude) via FastAPI<\/li>\n  <li>Streaming des r\u00e9ponses : Server-Sent Events avec FastAPI<\/li>\n  <li>Tests unitaires avec pytest et TestClient<\/li>\n  <li>Tests d'int\u00e9gration avec httpx AsyncClient<\/li>\n  <li>Fixtures, mocks, base de donn\u00e9es de test<\/li>\n  <li>Couverture de code et CI : GitHub Actions<\/li>\n  <li>Consommer l'API depuis un front JavaScript : fetch, axios<\/li>\n  <li>Consommer l'API depuis un outil no-code : Make, Zapier, n8n<\/li>\n  <li>D\u00e9ploiement de l'API : uvicorn, gunicorn, workers<\/li>\n  <li>Dockeriser son API : Dockerfile minimaliste<\/li>\n  <li>D\u00e9ploiement sur Render, Railway et comparaison Azure App Service<\/li>\n  <li>Configuration production : logging, gestion des secrets, health check<\/li>\n<\/ul><\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9er des API avec Python Objectifs Ma\u00eetriser les principes REST et concevoir des API robustes avec FastAPI Valider et s\u00e9curiser [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","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":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","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":""},"class_list":["post-1013","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/pages\/1013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1013"}],"version-history":[{"count":13,"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/pages\/1013\/revisions"}],"predecessor-version":[{"id":1038,"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/pages\/1013\/revisions\/1038"}],"wp:attachment":[{"href":"https:\/\/pythonia.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}