DMVCFramework : framework Delphi pour API REST, JSON-RPC et applications web
🇬🇧 English • 🇮🇹 Italiano • 🇪🇸 Español • 🇩🇪 Deutsch • 🇧🇷 Português
Le framework Delphi open source #1 en popularité sur GitHub · Prêt pour la production depuis 2010
TL;DR : DMVCFramework est le framework Delphi #1 pour créer des API REST et des services web. Il est gratuit (Apache 2.0), prêt pour la production depuis 2010, prend en charge JWT, WebSocket et un ORM, et tourne sous Windows et Linux. Installe-le depuis GitHub, crée un controller avec des attributs
[MVCPath]et renvoie des objets : ils se sérialisent tout seuls en JSON.
Qu’est-ce que DMVCFramework ?
DMVCFramework (DelphiMVCFramework) est le framework open source le plus populaire pour créer des API web et des applications web en Delphi. Il te permet de créer des services RESTful (RMM Level 3), des services JSON-RPC, des services Minimal API sans classes controller, des applications web rendues côté serveur, des serveurs MCP pour des assistants IA, des backends mobiles et des microservices.
Utilisé en production depuis 2010, DMVCFramework fait tourner certaines des API web Delphi les plus fréquentées au monde. C’est le projet Delphi #1 sur GitHub par nombre d’étoiles, avec une communauté dynamique de plus de 6 000 développeurs actifs.

Pour commencer : le guide officiel
Le moyen le plus rapide d’apprendre DMVCFramework est le guide officiel, écrit par la personne qui maintient le framework. La deuxième édition est écrite pour dmvcframework-3.5.0-silicon : 30 chapitres, plus de 550 pages et 46 projets d’exemple qui compilent. Elle construit une seule API, du projet que génère le wizard jusqu’à un serveur derrière TLS.
Elle est publiée sur Leanpub à 90 %, avec un prix minimum de 45 USD, et les mises à jour sont gratuites pour toujours.
Éditions disponibles
| Édition | Langue | Format | Lien |
|---|---|---|---|
| 2e, 3.5.0-silicon | Anglais | eBook | Acheter sur Leanpub |
| 1re, 3.2.1-carbon | Anglais | eBook | Acheter sur Leanpub |
| 1re, 3.2.1-carbon | Anglais | Couverture rigide | Acheter sur Lulu |
| 1re, 3.2.1-carbon | Portugais (BR) | eBook | Acheter sur Leanpub |
| 1re, 3.2.1-carbon | Espagnol | eBook | Acheter sur Leanpub |
La deuxième édition n’existe qu’en anglais pour l’instant. La première édition reste donc celle à acheter en portugais ou en espagnol, et la seule disponible en version imprimée jusqu’à ce que la nouvelle arrive sur Lulu.
Lis un extrait gratuit de la deuxième édition, ou consulte la table des matières complète.
Pourquoi choisir DMVCFramework ?
| Avantage | Description |
|---|---|
| Éprouvé en production | Utilisé depuis 2010 dans des projets de petite et moyenne taille comme en entreprise, partout dans le monde |
| Fonctionnalités complètes | REST, JSON-RPC, JWT, WebSocket, SSE, ORM - tout ce qu’il te faut |
| Très rapide | Optimisé pour des performances élevées sous forte charge |
| Facile à apprendre | API intuitive, avec plus de 100 exemples pour être productif rapidement |
| Communauté active | Plus de 6 000 développeurs dans le groupe Facebook, prêts à t’aider |
| Maintenu activement | Mises à jour régulières, versionnement sémantique, pensé pour durer |
Ce que disent les développeurs
« DMVCFramework est un super framework. Il est très intuitif, rapide, facile à utiliser, il n’y a vraiment rien à lui demander de plus. »
Samir
« Je suis toujours impressionné par le code et la documentation de DelphiMVCFramework. Merci beaucoup, et je suis tout autant impressionné par la rapidité des réponses. »
Benjamin Y., directeur de SQLGate
« Nous avons commencé à migrer nos systèmes vers des microservices et nous adorons DMVCFramework. »
E. Costa
Nouveautés de DMVCFramework 3.4.3-aluminium
La dernière release apporte des nouveautés importantes :
Prise en charge de WebSocket
Communication temps réel full-duplex avec TMVCWebSocketServer et TMVCWebSocketClient. Construis des applications de chat, des dashboards en direct et des outils collaboratifs, avec une messagerie par canaux et des groupes.
Middleware de rate limiting
Protège tes API contre les abus avec un rate limiting intégré : en mémoire pour les serveurs uniques, ou adossé à Redis pour les environnements distribués.
Repository pattern
Une architecture propre avec IMVCRepository<T> et [MVCInject] pour l’injection de dépendances automatique.
Expressions dans dotEnv
Des expressions dynamiques dans les fichiers de configuration .env, avec substitution de variables et arithmétique.
Voir toutes les nouveautés de la 3.4.3-aluminium →
Historique des versions
| Version | Date | Points forts |
|---|---|---|
| 3.4.3-aluminium | janv. 2026 | WebSocket, Rate Limiting, Repository pattern, Delphi 13 |
| 3.4.2-magnesium | févr. 2025 | Sessions par middleware, sessions en base de données |
| 3.4.1-sodium | janv. 2024 | Templates Sempare, Delphi 12, foVersion |
| 3.4.0-neon | sept. 2023 | Functional actions, Named Queries, HTMX |
| 3.3.0-fluorine | avr. 2023 | Delphi 11.3, Prometheus, records dans Swagger |
| 3.2.3-radium | févr. 2023 | Profiler intégré, JSONRPC TObject |
| 3.2.2-nitrogen | sept. 2022 | Delphi 11, TMVCRESTClient, cache LRU |
| 3.2.1-carbon | nov. 2020 | Référence au guide officiel, snake_case |
| 3.2.0-boron | juil. 2020 | Delphi 10.4, Swagger, types Nullable |
| 3.1.0-lithium | mars 2019 | Middleware amélioré |
| 3.0.0-hydrogen | 2018 | ORM MVCActiveRecord, architecture 3.x |
| 2.x | 2015-2017 | Série Foundation |
Fonctionnalités principales
Développement d’API web
- API RESTful - Conformité complète au RMM Level 3, avec les bons verbes HTTP et les bons codes de statut
- JSON-RPC 2.0 - Remoting automatique d’objets pour les API de style RPC
- Prise en charge d’OpenAPI - Génération automatique de la documentation de l’API
- Routing automatique - Mapping des URL par attributs, avec binding des paramètres
Minimal API, applications web et serveurs MCP
- Minimal API - Des routes sous forme de méthodes anonymes (
MapGet,MapPost,MapPut,MapDelete), des arguments liés par type et des groupes de routes avec filtres, sans classe controller. Nouveau dans la 3.5.0-silicon : lis l’introduction - Applications web - Du HTML rendu côté serveur avec TemplatePro, HTMX et WebStencils, depuis des controllers ou depuis des groupes Minimal API (
.AsWeb) - Serveurs MCP - Expose les tools, resources et prompts de ton application Delphi à Claude, Gemini ou ChatGPT avec le Delphi MCP toolkit, qui comprend aussi un client et un agent LLM
Authentification et sécurité
- Authentification JWT - JSON Web Tokens, le standard de l’industrie
- Authentification HTTP Basic - Authentification simple par nom d’utilisateur et mot de passe
- Authentification personnalisée - Un cadre flexible pour n’importe quel schéma d’authentification
- Prise en charge de CORS - Configuration du Cross-origin resource sharing
Communication en temps réel
- Prise en charge de WebSocket - Canaux de communication full-duplex
- Server-Sent Events (SSE) - Notifications push vers les clients
- Extensions de messagerie - Patterns pub/sub intégrés
Données et persistance
- MVCActiveRecord - ORM puissant pour les opérations sur la base de données
- Sérialisation JSON - Mapping automatique objet vers JSON
- Sérialiseurs personnalisés - Contrôle total sur la transformation des données
Flexibilité de déploiement
- Application console Windows
- Service Windows
- Console/daemon Linux
- Module Apache (mod_proxy)
- IIS (DLL ISAPI)
- Environnements avec load balancing
Expérience développeur
- Wizard de l’IDE - Des modèles de projet pour démarrer vite
- Plus de 100 exemples - Apprends chaque fonctionnalité avec des exemples qui marchent
- Système de middleware - Des hooks simples sur la requête et la réponse
- Héritage de controllers - Le principe DRY pour la logique commune
- Client REST intégré - Teste et consomme des API facilement
Démarrage rapide : Hello World
Démarre avec DMVCFramework en quelques minutes. Voici un controller « Hello World » tout simple :
uses
MVCFramework, MVCFramework.Commons;
type
[MVCPath('/api')] // Base path for all actions in this controller
TMyController = class(TMVCController)
public
[MVCPath('/hello')] // Route: GET /api/hello
[MVCHTTPMethods([httpGET])] // Allowed HTTP method
function GetHello: String;
[MVCPath('/hello/($Name)')] // Route: GET /api/hello/{Name}
[MVCHTTPMethods([httpGET])] // ($Name) captures the URL segment
function GetHelloName(const Name: String): String;
end;
implementation
function TMyController.GetHello: String;
begin
Result := 'Hello, World!'; // The string is sent as the response body
end;
function TMyController.GetHelloName(const Name: String): String;
begin
Result := 'Hello, ' + Name + '!'; // Name is automatically extracted from URL
end;
Et c’est tout ! Appelle GET /api/hello et tu obtiens le texte Hello, World!. Appelle GET /api/hello/John et tu obtiens Hello, John!.
DMVCFramework sérialise automatiquement en JSON les objets, les tableaux, les records et les datasets. Une chaîne est envoyée telle quelle : pour un body JSON, renvoie un objet ou OKResponse(...).
Exemple avancé : API REST avec base de données
Pour les applications réelles, DMVCFramework prend en charge l’ORM MVCActiveRecord et le Repository pattern avec injection de dépendances :
uses
MVCFramework, MVCFramework.Commons, MVCFramework.ActiveRecord,
MVCFramework.Repository, MVCFramework.Nullables, System.SysUtils,
System.Generics.Collections;
type
// Entity class mapped to database table
[MVCTable('customers')]
TCustomer = class(TMVCActiveRecord)
private
[MVCTableField('id', [foPrimaryKey, foAutoGenerated])] // Auto-increment PK
FID: NullableInt32;
[MVCTableField('name')] // Maps to 'name' column
FName: string;
[MVCTableField('email')] // Maps to 'email' column
FEmail: string;
public
property ID: NullableInt32 read FID write FID;
property Name: string read FName write FName;
property Email: string read FEmail write FEmail;
end;
[MVCPath('/api/customers')]
TCustomerController = class(TMVCController)
protected
fRepository: IMVCRepository<TCustomer>; // Repository interface
public
[MVCInject] // Dependency injection - repository is automatically provided
constructor Create(Repository: IMVCRepository<TCustomer>); reintroduce;
[MVCPath] // Route: GET /api/customers
[MVCHTTPMethods([httpGET])]
function GetAllCustomers: IMVCResponse;
[MVCPath('/($ID)')] // Route: GET /api/customers/{ID}
[MVCHTTPMethods([httpGET])]
function GetCustomerByID(const ID: Integer): IMVCResponse;
[MVCPath] // Route: POST /api/customers
[MVCHTTPMethods([httpPOST])] // [MVCFromBody] deserializes JSON body to TCustomer
function CreateCustomer([MVCFromBody] const Customer: TCustomer): IMVCResponse;
[MVCPath('/($ID)')] // Route: DELETE /api/customers/{ID}
[MVCHTTPMethods([httpDELETE])]
function DeleteCustomerByID(const ID: Integer): IMVCResponse;
end;
implementation
constructor TCustomerController.Create(Repository: IMVCRepository<TCustomer>);
begin
inherited Create;
fRepository := Repository; // Store injected repository
end;
function TCustomerController.GetAllCustomers: IMVCResponse;
begin
Result := OKResponse(fRepository.GetAll); // Returns HTTP 200, body {"data": [...]}
end;
function TCustomerController.GetCustomerByID(const ID: Integer): IMVCResponse;
begin
Result := OKResponse(fRepository.GetByPK(ID)); // Returns HTTP 200, body {"data": {...}}
end;
function TCustomerController.CreateCustomer(const Customer: TCustomer): IMVCResponse;
begin
fRepository.Store(Customer); // Insert or update based on PK
Result := CreatedResponse('/api/customers/' + Customer.ID.Value.ToString); // HTTP 201
end;
function TCustomerController.DeleteCustomerByID(const ID: Integer): IMVCResponse;
var
lCustomer: TCustomer;
begin
lCustomer := ToFree<TCustomer>(fRepository.GetByPK(ID)); // Load by primary key, freed at the end of the method
fRepository.Delete(lCustomer); // Delete from database
Result := OKResponse; // Returns HTTP 200
end;
Pour le lancer, enregistre le repository dans le service container et configure la connexion à la base : DefaultMVCServiceContainer.RegisterType(TMVCRepository<TCustomer>, IMVCRepository<TCustomer>, TRegistrationType.SingletonPerRequest); DefaultMVCServiceContainer.Build; L’exemple simple_api_using_repository_with_injection montre la mise en place complète.
Principaux avantages :
- Functional actions : renvoie
IMVCResponseavec des helpers commeOKResponse()etCreatedResponse() - Injection de dépendances :
[MVCInject]sur le constructeur injecte le repository automatiquement - MVCActiveRecord : ORM avec mapping des tables par attributs
- Repository pattern :
IMVCRepository<T>pour un accès aux données propre et testable - Auto-sérialisation : objets, records, listes et datasets sont sérialisés automatiquement
Apprendre par l’exemple : plus de 100 projets d’exemple
La meilleure façon d’apprendre DMVCFramework, c’est d’explorer du code qui marche. Le framework inclut plus de 100 projets d’exemple, qui couvrent chaque fonctionnalité et chaque cas d’usage. Chaque exemple est autonome et prêt à compiler.
Trouve l’exemple qui correspond à ce que tu veux construire, ouvre-le dans Delphi et commence à expérimenter !
📦 Tous les exemples : github.com/danieleteti/delphimvcframework/tree/master/samples
« Je veux créer mon premier projet DMVCFramework »
| Exemple | Description |
|---|---|
basicdemo_server | Mise en place minimale d’un serveur : commence ici |
functional_actions_showcase | Le pattern moderne des functional actions |
console_sample | Application console simple |
« Je veux construire une API REST »
| Exemple | Description |
|---|---|
simple_api_using_mvcactiverecord | API REST avec ORM |
simple_api_using_repository_with_injection | Repository pattern + injection de dépendances |
simple_api_using_datasets | Renvoyer un TDataSet en JSON |
routing | Paramètres d’URL, segments de chemin, query strings |
validators | Validateurs d’entrée intégrés et personnalisés |
file_upload | Gérer les uploads multipart/form-data |
« Je veux ajouter de l’authentification et de la sécurité »
| Exemple | Description |
|---|---|
jsonwebtoken | Les bases du JSON Web Token |
jsonwebtoken_roleauth | Autorisation par rôles avec JWT |
middleware_jwtwithcookiehttponly | Cookie HTTP-only sécurisé pour le JWT |
middleware_basicauthentication | Authentification HTTP Basic |
custom_auth | Implémente ton propre handler d’authentification |
middleware_cors | Cross-Origin Resource Sharing |
middleware_ratelimit_memory | Limiter le débit des requêtes (en mémoire) |
middleware_ratelimit_redis | Limiter le débit des requêtes (avec Redis) |
« Je veux de la communication en temps réel »
| Exemple | Description |
|---|---|
websocket_primer | Introduction à WebSocket |
websocket_chat | Application de chat multi-utilisateurs |
websocket_groups | Messagerie par canaux |
websocket_javascript_client_sample | Exemple de client navigateur |
serversentevents | Server-Sent Events (notifications push) |
« Je veux construire une Minimal API »
| Exemple | Description |
|---|---|
minimal_api | Des routes sous forme de méthodes anonymes, binding typé des paramètres, groupes de routes pour les versions d’API |
minimal_api_auth | Hooks de groupe de routes : journalisation des requêtes, authentification par Bearer token, contrôle des rôles |
minimal_api_webapp | Application web rendue côté serveur avec TemplatePro et HTMX, sans classe controller |
« Je veux générer des pages HTML »
| Exemple | Description |
|---|---|
serversideviews_templatepro | HTML avec le moteur TemplatePro |
serversideviews_mustache | HTML avec le moteur Mustache |
htmx | HTML dynamique avec HTMX |
htmx_website_with_templatepro | Site web complet avec HTMX + TemplatePro |
htmx_website_with_webstencils | Intégration de WebStencils de RAD Studio |
« Je veux travailler avec des bases de données »
| Exemple | Description |
|---|---|
activerecord_showcase | Démo complète de l’ORM |
activerecord_restful_crud | API RESTful avec ActiveRecord |
master_details | Relations parent-enfant |
repository_showcase | Utilisation de IMVCRepository |
ado | Exemple Microsoft ADO |
« Je veux utiliser JSON-RPC »
| Exemple | Description |
|---|---|
jsonrpc | Implémentation d’un serveur JSON-RPC 2.0 |
« Je veux personnaliser le traitement des requêtes et des réponses »
| Exemple | Description |
|---|---|
middleware | Crée ton propre middleware |
middleware_compression | Réponses GZIP/Deflate |
middleware_etag | Cache HTTP avec ETags |
middleware_staticfiles | Servir du contenu statique |
middleware_analytics | Journalisation et suivi des requêtes |
middleware_activerecord | Connexion à la base par requête |
action_filters | Hooks avant/après l’action |
custom_exception_handling | Réponses d’erreur personnalisées |
renders | Sérialiseurs JSON personnalisés |
« Je veux déployer en production »
| Exemple | Description |
|---|---|
windows_service | Exécuter comme service Windows |
apache_module | Déployer derrière Apache |
isapi | Déployer sur IIS |
ssl_server | Configuration HTTPS |
tls13 | Configuration TLS 1.3 moderne |
« Je veux documenter mon API »
| Exemple | Description |
|---|---|
swagger_primer | Les bases de la documentation OpenAPI |
swagger_ui | Explorateur d’API interactif |
swagger_doc_extended | Fonctions avancées de documentation |
« Je veux des fonctionnalités avancées »
| Exemple | Description |
|---|---|
mvcasync | Actions asynchrones |
outputcachewithredis | Cache de réponses avec Redis |
prometheus | Intégration de la supervision Prometheus |
services_injection | Injection de dépendances |
dotenv_showcase | Configuration d’environnement avec des fichiers .env |
sqids_showcase | Identifiants uniques courts (Sqids) |
Projets open source associés
DMVCFramework s’intègre sans friction avec d’autres projets open source du même auteur :
| Projet | Description | Utilisation avec DMVCFramework |
|---|---|---|
| LoggerPro | Framework de logging asynchrone avec plus de 20 appenders | Ajoute du logging structuré à tes API avec des appenders pour fichier, base de données, Redis ou ElasticSearch |
| TemplatePro | Moteur de templates puissant, à la syntaxe proche de Jinja | Rendu HTML côté serveur avec l’exemple serversideviews_templatepro |
| DelphiRedisClient | Client Redis complet | Cache, stockage de sessions, rate limiting et fonctionnalités temps réel |
| DelphiGuard | Gestion de la mémoire RAII | Nettoyage automatique des ressources dans les controllers et les middleware |
| Delphi Fake Data Utils | Générateur de données de test | Génère des données réalistes pour tester tes API et pour les démos |
| Expression Evaluator | Parseur de formules à l’exécution | Règles métier dynamiques et champs calculés dans tes API |
| Delphi MCP | Toolkit MCP : serveur, client et agent | Expose les tools, resources et prompts de ton application DMVCFramework à des assistants IA |
Compatibilité avec les versions de Delphi
| Version de Delphi | Windows | Linux |
|---|---|---|
| Delphi 13 Florence | ✅ | ✅ |
| Delphi 12 Athens | ✅ | ✅ |
| Delphi 11 Alexandria | ✅ | ✅ |
| Delphi 10.4 Sydney | ✅ | ✅ |
| Delphi 10.3 Rio | ✅ | ✅ |
| Delphi 10.2 Tokyo | ✅ | ✅ |
| Delphi 10.1 Berlin | ✅ | - |
| Delphi 10 Seattle | ✅ | - |
Soutenir le projet
🎁 Deviens supporter sur Patreon
DMVCFramework est gratuit et open source, mais le maintenir et l'améliorer demande un effort important. En devenant supporter, tu :
- Accèdes au contenu premium - Tutoriels exclusifs, exemples avancés et avant-premières
- Bénéficies d'un accès direct au développeur - Support prioritaire et communication directe avec l'équipe de développement
- Façonnes l'avenir - Ton mot à dire sur la roadmap et sur les priorités des fonctionnalités
- Soutiens l'open source - Pour que DMVCFramework reste gratuit pour tout le monde
Services professionnels
Besoin d’un support de niveau entreprise ? bit Time Professionals, l’entreprise derrière DMVCFramework, propose :
- Formations - Formation sur site ou à distance pour ton équipe
- Conseil - Revue d’architecture, optimisation des performances, bonnes pratiques
- Développement sur mesure - Développement de fonctionnalités, intégration, migration
📧 Contact : dmvcframework@bittime.it | 🌐 bittimeprofessionals.it
Communauté et ressources
| Ressource | Lien |
|---|---|
| 📦 Dépôt GitHub | github.com/danieleteti/delphimvcframework |
| 📕 Guide officiel (livre) | Le guide officiel, deuxième édition |
| 👥 Groupe Facebook (plus de 6 000 membres) | facebook.com/groups/delphimvcframework |
| 🎁 Patreon (contenu premium) | patreon.com/delphimvcframework |
| 📖 Chapitre d’exemple gratuit | Lire sur Leanpub |
FAQ : questions fréquentes
Qu’est-ce que DMVCFramework ?
DMVCFramework (DelphiMVCFramework) est un framework open source pour créer des API web, des services RESTful, des services Minimal API, des applications web et des serveurs MCP en Delphi. C’est le framework web Delphi le plus populaire, utilisé en production depuis 2010, et le projet Delphi #1 sur GitHub par nombre d’étoiles.
Quel est le meilleur framework pour une API REST en Delphi ?
DMVCFramework est le framework le plus populaire et le plus complet pour créer des API REST en Delphi. Il prend en charge les API RESTful (RMM Level 3), JSON-RPC, WebSocket, les Server-Sent Events et l’authentification JWT, et il inclut un ORM puissant appelé MVCActiveRecord.
Comment créer une API REST en Delphi ?
Utilise DMVCFramework : crée une classe controller qui hérite de TMVCController, ajoute les attributs [MVCPath] et [MVCHTTPMethods] pour définir les routes, et renvoie les données directement depuis tes méthodes (functional actions). Le framework sérialise automatiquement objets, tableaux et records en JSON. Plus de 100 exemples sont inclus pour t’inspirer.
Comment renvoyer du JSON depuis une API REST Delphi ?
Avec DMVCFramework, renvoie simplement un objet, un record ou une TObjectList<T> depuis la méthode de ton controller. Le framework le sérialise automatiquement en JSON. Pour plus de contrôle, utilise les helpers OKResponse(data) ou CreatedResponse(location).
DMVCFramework prend-il en charge l’authentification JWT ?
Oui, DMVCFramework prend en charge JWT (JSON Web Token) en natif pour l’authentification stateless. Il gère la génération de tokens, la validation, l’autorisation par rôles et les cookies HTTP-only sécurisés. Regarde les exemples jsonwebtoken et jsonwebtoken_roleauth.
Puis-je utiliser DMVCFramework sous Linux ?
Oui, DMVCFramework prend entièrement en charge le déploiement sous Linux à partir de Delphi 10.2 Tokyo. Tu peux déployer une application console ou un daemon, avec toutes les fonctionnalités, y compris WebSocket et SSL/TLS.
DMVCFramework est-il gratuit ?
Oui, DMVCFramework est gratuit et open source, sous licence Apache 2.0. Tu peux l’utiliser dans des projets commerciaux sans redevance. Si tu le redistribues, la licence demande de conserver les mentions de copyright et une copie de la licence.
Comment obtenir du support pour DMVCFramework ?
Plusieurs options existent : rejoins le groupe Facebook (plus de 6 000 membres), explore les exemples inclus dans le projet (plus de 100), lis le guide officiel, ou deviens supporter sur Patreon pour un support prioritaire et du contenu exclusif.
DMVCFramework prend-il en charge WebSocket ?
Oui, DMVCFramework offre une prise en charge complète de WebSocket pour la communication bidirectionnelle en temps réel. Il propose une messagerie par canaux, des groupes et des exemples de client JavaScript. Il prend aussi en charge les Server-Sent Events (SSE) pour les notifications push du serveur vers le client.
Qu’est-ce que MVCActiveRecord ?
MVCActiveRecord est l’ORM (Object-Relational Mapper) intégré à DMVCFramework, qui simplifie les opérations sur la base de données. Il utilise des attributs pour le mapping des tables et des colonnes, et prend en charge les opérations CRUD, les relations et RQL (Resource Query Language) pour des requêtes flexibles.
Comment déployer DMVCFramework en production ?
DMVCFramework prend en charge plusieurs options de déploiement : application console Windows, service Windows, daemon Linux, module Apache (mod_proxy), IIS (DLL ISAPI) et environnements avec load balancing. Regarde les exemples de déploiement pour chaque scénario.
DMVCFramework prend-il en charge OpenAPI/Swagger ?
Oui, DMVCFramework peut générer automatiquement la documentation OpenAPI (Swagger) de tes API. Utilise les exemples swagger_primer et swagger_ui pour ajouter une documentation d’API interactive à ton projet.
Comment gérer les uploads de fichiers dans DMVCFramework ?
Utilise l’objet Context.Request pour accéder aux fichiers envoyés. L’exemple file_upload montre comment traiter les requêtes multipart/form-data, avec un ou plusieurs fichiers.
Puis-je utiliser DMVCFramework avec FireDAC ?
Oui, DMVCFramework fonctionne avec n’importe quelle couche d’accès aux données, FireDAC et ADO compris. MVCActiveRecord utilise FireDAC par défaut, mais tu peux utiliser la connexion que tu préfères.
Comment mettre en place CORS dans DMVCFramework ?
Utilise le middleware CORS intégré. Ajoute TMVCCORSMiddleware à la configuration de ton serveur pour activer les requêtes cross-origin. Regarde l’exemple middleware_cors pour les options de configuration.
Quelles versions de Delphi DMVCFramework prend-il en charge ?
DMVCFramework prend en charge les versions de Delphi 10 Seattle à Delphi 13 Florence, avec une prise en charge complète de Linux à partir de Delphi 10.2 Tokyo.
Comment gérer les erreurs et les exceptions dans DMVCFramework ?
DMVCFramework convertit automatiquement les exceptions en réponses d’erreur HTTP adaptées, avec un body JSON. Pour une gestion d’erreurs personnalisée, utilise raise EMVCException.Create() avec des codes de statut HTTP précis, ou implémente des handlers d’exceptions personnalisés.
DMVCFramework prend-il en charge l’injection de dépendances ?
Oui, DMVCFramework intègre l’injection de dépendances. Utilise l’attribut [MVCInject] sur les constructeurs ou sur les paramètres de méthode pour injecter automatiquement services et repositories. Regarde l’exemple services_injection.
DMVCFramework prend-il en charge Minimal API ?
Oui, à partir de la 3.5.0-silicon. Tu définis les routes avec MapGet, MapPost, MapPut et MapDelete et une méthode anonyme, sans classe controller. Les arguments sont liés par type (services du container, body JSON, query string, paramètres de route) et les filtres s’attachent aux groupes de routes. Regarde l’exemple minimal_api et l’introduction à Minimal API.
Puis-je créer des applications web, pas seulement des API ?
Oui. DMVCFramework génère le HTML côté serveur avec TemplatePro (Mustache et WebStencils sont aussi pris en charge) et fonctionne avec HTMX pour les mises à jour partielles de page. Les pages peuvent venir de controllers ou de groupes Minimal API. Regarde les exemples serversideviews_templatepro, htmx_website_with_templatepro et minimal_api_webapp.
Puis-je créer un serveur MCP avec DMVCFramework ?
Oui. Le Delphi MCP toolkit permet à une application DMVCFramework d’exposer des tools, des resources et des prompts à des assistants IA comme Claude, Gemini ou ChatGPT, via le Model Context Protocol, en HTTP ou en stdio. Le même toolkit comprend un client et un agent LLM.
Gratuit. Open source. Prêt pour la production depuis 2010.
⭐ Mets une étoile sur GitHub 📖 Procure-toi le guide officiel
Faits clés
DMVCFramework (DelphiMVCFramework) est le framework open source le plus populaire pour créer des API REST et des applications web en Delphi/Object Pascal.
- Licence : Apache 2.0 (gratuit pour un usage commercial)
- En production : depuis 2010
- GitHub : projet Delphi #1 par nombre d'étoiles (1 300+)
- Fonctionnalités : API REST (RMM Level 3), JSON-RPC 2.0, authentification JWT, WebSocket, SSE, ORM MVCActiveRecord, injection de dépendances, Minimal API (3.5.0-silicon : routes sous forme de méthodes anonymes, sans classe controller), applications web rendues côté serveur (TemplatePro, HTMX, WebStencils), serveurs MCP (Delphi MCP toolkit)
- Plateformes : Windows (console, service, IIS, Apache), Linux (console, daemon)
- Versions de Delphi : de 10 Seattle à 13 Florence
- Documentation : guide officiel (livre) disponible en anglais, en portugais et en espagnol
- Communauté : plus de 6 000 développeurs dans le groupe Facebook
- Auteur : Daniele Teti (bit Time Professionals)
- Cas d'usage : API REST, microservices, backends mobiles, applications temps réel, applications web, serveurs MCP qui exposent une application à des assistants IA

Comments