Become a member!

DMVCFramework : framework Delphi pour API REST, JSON-RPC et applications web

🌐
Cette page est aussi disponible dans d'autres langues :
🇬🇧 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.

Logo DMVCFramework

Étoiles GitHubDernier commit GitHubLicence
⬇️ Télécharger la dernière release ⭐ GitHub (1,3k+ étoiles)

Pour commencer : le guide officiel

DMVCFramework - The Official Guide, deuxième édition, de Daniele Teti

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

ÉditionLangueFormatLien
2e, 3.5.0-siliconAnglaiseBookAcheter sur Leanpub
1re, 3.2.1-carbonAnglaiseBookAcheter sur Leanpub
1re, 3.2.1-carbonAnglaisCouverture rigideAcheter sur Lulu
1re, 3.2.1-carbonPortugais (BR)eBookAcheter sur Leanpub
1re, 3.2.1-carbonEspagnoleBookAcheter 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 ?

AvantageDescription
Éprouvé en productionUtilisé depuis 2010 dans des projets de petite et moyenne taille comme en entreprise, partout dans le monde
Fonctionnalités complètesREST, JSON-RPC, JWT, WebSocket, SSE, ORM - tout ce qu’il te faut
Très rapideOptimisé pour des performances élevées sous forte charge
Facile à apprendreAPI intuitive, avec plus de 100 exemples pour être productif rapidement
Communauté activePlus de 6 000 développeurs dans le groupe Facebook, prêts à t’aider
Maintenu activementMises à 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

VersionDatePoints forts
3.4.3-aluminiumjanv. 2026WebSocket, Rate Limiting, Repository pattern, Delphi 13
3.4.2-magnesiumfévr. 2025Sessions par middleware, sessions en base de données
3.4.1-sodiumjanv. 2024Templates Sempare, Delphi 12, foVersion
3.4.0-neonsept. 2023Functional actions, Named Queries, HTMX
3.3.0-fluorineavr. 2023Delphi 11.3, Prometheus, records dans Swagger
3.2.3-radiumfévr. 2023Profiler intégré, JSONRPC TObject
3.2.2-nitrogensept. 2022Delphi 11, TMVCRESTClient, cache LRU
3.2.1-carbonnov. 2020Référence au guide officiel, snake_case
3.2.0-boronjuil. 2020Delphi 10.4, Swagger, types Nullable
3.1.0-lithiummars 2019Middleware amélioré
3.0.0-hydrogen2018ORM MVCActiveRecord, architecture 3.x
2.x2015-2017Sé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 IMVCResponse avec des helpers comme OKResponse() et CreatedResponse()
  • 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 »

ExempleDescription
basicdemo_serverMise en place minimale d’un serveur : commence ici
functional_actions_showcaseLe pattern moderne des functional actions
console_sampleApplication console simple

« Je veux construire une API REST »

ExempleDescription
simple_api_using_mvcactiverecordAPI REST avec ORM
simple_api_using_repository_with_injectionRepository pattern + injection de dépendances
simple_api_using_datasetsRenvoyer un TDataSet en JSON
routingParamètres d’URL, segments de chemin, query strings
validatorsValidateurs d’entrée intégrés et personnalisés
file_uploadGérer les uploads multipart/form-data

« Je veux ajouter de l’authentification et de la sécurité »

ExempleDescription
jsonwebtokenLes bases du JSON Web Token
jsonwebtoken_roleauthAutorisation par rôles avec JWT
middleware_jwtwithcookiehttponlyCookie HTTP-only sécurisé pour le JWT
middleware_basicauthenticationAuthentification HTTP Basic
custom_authImplémente ton propre handler d’authentification
middleware_corsCross-Origin Resource Sharing
middleware_ratelimit_memoryLimiter le débit des requêtes (en mémoire)
middleware_ratelimit_redisLimiter le débit des requêtes (avec Redis)

« Je veux de la communication en temps réel »

ExempleDescription
websocket_primerIntroduction à WebSocket
websocket_chatApplication de chat multi-utilisateurs
websocket_groupsMessagerie par canaux
websocket_javascript_client_sampleExemple de client navigateur
serversenteventsServer-Sent Events (notifications push)

« Je veux construire une Minimal API »

ExempleDescription
minimal_apiDes routes sous forme de méthodes anonymes, binding typé des paramètres, groupes de routes pour les versions d’API
minimal_api_authHooks de groupe de routes : journalisation des requêtes, authentification par Bearer token, contrôle des rôles
minimal_api_webappApplication web rendue côté serveur avec TemplatePro et HTMX, sans classe controller

« Je veux générer des pages HTML »

ExempleDescription
serversideviews_templateproHTML avec le moteur TemplatePro
serversideviews_mustacheHTML avec le moteur Mustache
htmxHTML dynamique avec HTMX
htmx_website_with_templateproSite web complet avec HTMX + TemplatePro
htmx_website_with_webstencilsIntégration de WebStencils de RAD Studio

« Je veux travailler avec des bases de données »

ExempleDescription
activerecord_showcaseDémo complète de l’ORM
activerecord_restful_crudAPI RESTful avec ActiveRecord
master_detailsRelations parent-enfant
repository_showcaseUtilisation de IMVCRepository
adoExemple Microsoft ADO

« Je veux utiliser JSON-RPC »

ExempleDescription
jsonrpcImplémentation d’un serveur JSON-RPC 2.0

« Je veux personnaliser le traitement des requêtes et des réponses »

ExempleDescription
middlewareCrée ton propre middleware
middleware_compressionRéponses GZIP/Deflate
middleware_etagCache HTTP avec ETags
middleware_staticfilesServir du contenu statique
middleware_analyticsJournalisation et suivi des requêtes
middleware_activerecordConnexion à la base par requête
action_filtersHooks avant/après l’action
custom_exception_handlingRéponses d’erreur personnalisées
rendersSérialiseurs JSON personnalisés

« Je veux déployer en production »

ExempleDescription
windows_serviceExécuter comme service Windows
apache_moduleDéployer derrière Apache
isapiDéployer sur IIS
ssl_serverConfiguration HTTPS
tls13Configuration TLS 1.3 moderne

« Je veux documenter mon API »

ExempleDescription
swagger_primerLes bases de la documentation OpenAPI
swagger_uiExplorateur d’API interactif
swagger_doc_extendedFonctions avancées de documentation

« Je veux des fonctionnalités avancées »

ExempleDescription
mvcasyncActions asynchrones
outputcachewithredisCache de réponses avec Redis
prometheusIntégration de la supervision Prometheus
services_injectionInjection de dépendances
dotenv_showcaseConfiguration d’environnement avec des fichiers .env
sqids_showcaseIdentifiants uniques courts (Sqids)


Projets open source associés

DMVCFramework s’intègre sans friction avec d’autres projets open source du même auteur :

ProjetDescriptionUtilisation avec DMVCFramework
LoggerProFramework de logging asynchrone avec plus de 20 appendersAjoute du logging structuré à tes API avec des appenders pour fichier, base de données, Redis ou ElasticSearch
TemplateProMoteur de templates puissant, à la syntaxe proche de JinjaRendu HTML côté serveur avec l’exemple serversideviews_templatepro
DelphiRedisClientClient Redis completCache, stockage de sessions, rate limiting et fonctionnalités temps réel
DelphiGuardGestion de la mémoire RAIINettoyage automatique des ressources dans les controllers et les middleware
Delphi Fake Data UtilsGénérateur de données de testGénère des données réalistes pour tester tes API et pour les démos
Expression EvaluatorParseur de formules à l’exécutionRègles métier dynamiques et champs calculés dans tes API
Delphi MCPToolkit MCP : serveur, client et agentExpose les tools, resources et prompts de ton application DMVCFramework à des assistants IA

Compatibilité avec les versions de Delphi

Version de DelphiWindowsLinux
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

Rejoins-nous sur Patreon →


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

RessourceLien
📦 Dépôt GitHubgithub.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 gratuitLire 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.


DMVCFramework - Le framework Delphi #1 pour les API web
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