DMVCFramework: framework Delphi para APIs REST, JSON-RPC e aplicações web
🇬🇧 English • 🇮🇹 Italiano • 🇪🇸 Español • 🇩🇪 Deutsch • 🇫🇷 Français
O framework Delphi open source #1 em popularidade no GitHub · Pronto para produção desde 2010
TL;DR: O DMVCFramework é o framework Delphi #1 para criar APIs REST e web services. É gratuito (Apache 2.0), está pronto para produção desde 2010, suporta JWT, WebSocket e ORM, e roda em Windows e Linux. Baixe do GitHub, crie um controller com atributos
[MVCPath]e retorne objetos que são serializados para JSON automaticamente.
O que é o DMVCFramework?
O DMVCFramework (DelphiMVCFramework) é o framework open source mais popular para criar web APIs e aplicações web em Delphi. Com ele você cria serviços RESTful (RMM Level 3), serviços JSON-RPC, serviços Minimal API sem classes controller, aplicações web renderizadas no servidor, servidores MCP para assistentes de IA, backends para dispositivos móveis e microsserviços.
Usado em produção desde 2010, o DMVCFramework está por trás de algumas das web APIs Delphi de maior tráfego do mundo. É o projeto Delphi #1 no GitHub em número de estrelas, com uma comunidade ativa de mais de 6.000 desenvolvedores.

Comece por aqui: o guia oficial
O caminho mais rápido para aprender o DMVCFramework é o guia oficial, escrito por quem mantém o framework. A segunda edição foi escrita com base no dmvcframework-3.5.0-silicon: 30 capítulos, mais de 550 páginas e 46 projetos de exemplo que compilam. Ao longo do livro você constrói uma única API, do projeto gerado pelo wizard até um servidor atrás de TLS.
O livro já está no Leanpub, com 90% concluído, preço mínimo de 45 USD e atualizações gratuitas para sempre.
Edições disponíveis
| Edição | Idioma | Formato | Link |
|---|---|---|---|
| 2ª, 3.5.0-silicon | Inglês | eBook | Comprar no Leanpub |
| 1ª, 3.2.1-carbon | Inglês | eBook | Comprar no Leanpub |
| 1ª, 3.2.1-carbon | Inglês | Capa dura | Comprar na Lulu |
| 1ª, 3.2.1-carbon | Português (BR) | eBook | Comprar no Leanpub |
| 1ª, 3.2.1-carbon | Espanhol | eBook | Comprar no Leanpub |
Por enquanto a segunda edição existe só em inglês. Por isso a primeira edição continua sendo a que você compra em português ou espanhol, e a única impressa até a nova chegar à Lulu.
Leia uma amostra grátis da segunda edição ou veja o sumário completo.
Por que escolher o DMVCFramework?
| Benefício | Descrição |
|---|---|
| Comprovado em produção | Usado desde 2010 em projetos pequenos, médios e corporativos no mundo todo |
| Conjunto completo de recursos | REST, JSON-RPC, JWT, WebSocket, SSE, ORM - tudo o que você precisa |
| Muito rápido | Otimizado para alto desempenho sob cargas de trabalho pesadas |
| Fácil de aprender | API intuitiva, com mais de 100 exemplos para você ficar produtivo rápido |
| Comunidade ativa | Mais de 6.000 desenvolvedores no grupo do Facebook prontos para ajudar |
| Mantido ativamente | Atualizações regulares, versionamento semântico, preparado para o futuro |
O que dizem os desenvolvedores
“O DMVCFramework é um ótimo framework. É muito intuitivo, rápido, fácil de usar, na verdade não há mais nada a pedir.”
Samir
“Continuo impressionado com o código e com a documentação do DelphiMVCFramework. Muito obrigado, e fico admirado com a rapidez das suas respostas.”
Benjamin Y., Diretor da SQLGate
“Começamos a migrar nossos sistemas para microsserviços e estamos adorando o DMVCFramework.”
E. Costa
Novidades do DMVCFramework 3.4.3-aluminium
A última release traz grandes novidades:
Suporte a WebSocket
Comunicação em tempo real full-duplex com TMVCWebSocketServer e TMVCWebSocketClient. Crie aplicações de chat, dashboards ao vivo e ferramentas colaborativas, com mensagens baseadas em canais e grupos.
Middleware de rate limiting
Proteja as suas APIs contra abusos com rate limiting integrado, tanto em memória, para servidores únicos, quanto com Redis, para ambientes distribuídos.
Padrão Repository
Arquitetura limpa com IMVCRepository<T> e [MVCInject] para injeção de dependência automática.
Suporte a expressões no dotEnv
Expressões dinâmicas nos arquivos de configuração .env, com substituição de variáveis e aritmética.
Veja todas as novidades do 3.4.3-aluminium →
Histórico de versões
| Versão | Data | Destaques |
|---|---|---|
| 3.4.3-aluminium | jan 2026 | WebSocket, Rate Limiting, Padrão Repository, Delphi 13 |
| 3.4.2-magnesium | fev 2025 | Sessões via middleware, sessões em banco de dados |
| 3.4.1-sodium | jan 2024 | Sempare Templates, Delphi 12, foVersion |
| 3.4.0-neon | set 2023 | Functional Actions, Named Queries, HTMX |
| 3.3.0-fluorine | abr 2023 | Delphi 11.3, Prometheus, records no Swagger |
| 3.2.3-radium | fev 2023 | Profiler integrado, JSONRPC TObject |
| 3.2.2-nitrogen | set 2022 | Delphi 11, TMVCRESTClient, cache LRU |
| 3.2.1-carbon | nov 2020 | Referência ao guia oficial, snake_case |
| 3.2.0-boron | jul 2020 | Delphi 10.4, Swagger, tipos Nullable |
| 3.1.0-lithium | mar 2019 | Middleware aprimorado |
| 3.0.0-hydrogen | 2018 | ORM MVCActiveRecord, arquitetura 3.x |
| 2.x | 2015-2017 | Série Foundation |
Principais recursos
Desenvolvimento de Web API
- APIs RESTful - Conformidade total com o RMM Level 3, com os verbos HTTP e os status codes corretos
- JSON-RPC 2.0 - Remoting automático de objetos para APIs no estilo RPC
- Suporte a OpenAPI - Geração automática da documentação da API
- Roteamento automático - Mapeamento de URLs por atributos, com binding de parâmetros
Minimal API, aplicações web e servidores MCP
- Minimal API - Rotas como métodos anônimos (
MapGet,MapPost,MapPut,MapDelete), binding de argumentos por tipo e grupos de rotas com filtros, sem classe controller. Novidade do 3.5.0-silicon: leia a introdução - Aplicações web - HTML renderizado no servidor com TemplatePro, HTMX e WebStencils, a partir de controllers ou de grupos de rotas da Minimal API (
.AsWeb) - Servidores MCP - Exponha tools, resources e prompts da sua aplicação Delphi ao Claude, ao Gemini ou ao ChatGPT com o Delphi MCP toolkit, que também inclui um cliente e um agente de LLM
Autenticação e segurança
- Autenticação JWT - JSON Web Tokens, o padrão do mercado
- Autenticação HTTP Basic - Autenticação simples com usuário e senha
- Autenticação customizada - Estrutura flexível para qualquer esquema de autenticação
- Suporte a CORS - Configuração de cross-origin resource sharing
Comunicação em tempo real
- Suporte a WebSocket - Canais de comunicação full-duplex
- Server-Sent Events (SSE) - Notificações push para os clientes
- Extensões de mensageria - Padrões pub/sub integrados
Dados e persistência
- MVCActiveRecord - ORM poderoso para operações com banco de dados
- Serialização JSON - Mapeamento automático de objeto para JSON
- Serializers customizados - Controle total sobre a transformação dos dados
Flexibilidade de deploy
- Aplicação console do Windows
- Serviço do Windows
- Console/daemon no Linux
- Módulo do Apache (mod_proxy)
- IIS (DLL ISAPI)
- Ambientes com balanceamento de carga
Experiência do desenvolvedor
- Wizard da IDE - Modelos de projeto para começar rápido
- Mais de 100 exemplos - Aprenda cada recurso com exemplos funcionando
- Sistema de middleware - Hooks simples de request/response
- Herança de controllers - Princípio DRY para a lógica comum
- Cliente REST integrado - Teste e consuma APIs com facilidade
Início rápido: Hello World
Comece com o DMVCFramework em poucos minutos. Veja um controller “Hello World” simples:
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;
É só isso! Chame GET /api/hello e você recebe o texto Hello, World!. Chame GET /api/hello/John e você recebe Hello, John!.
O DMVCFramework serializa automaticamente objetos, arrays, records e datasets para JSON. Uma string é enviada como está: para um body JSON, retorne um objeto ou OKResponse(...).
Exemplo avançado: API REST com banco de dados
Para aplicações reais, o DMVCFramework suporta o ORM MVCActiveRecord e o padrão Repository com injeção de dependência:
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;
Para rodar o exemplo, registre o repository no service container e configure a conexão com o banco de dados: DefaultMVCServiceContainer.RegisterType(TMVCRepository<TCustomer>, IMVCRepository<TCustomer>, TRegistrationType.SingletonPerRequest); DefaultMVCServiceContainer.Build; O exemplo simple_api_using_repository_with_injection mostra a configuração completa.
Principais vantagens:
- Functional actions: retorne
IMVCResponsecom helpers comoOKResponse()eCreatedResponse() - Injeção de dependência:
[MVCInject]no construtor para injetar o repository automaticamente - MVCActiveRecord: ORM com mapeamento de tabelas por atributos
- Padrão Repository:
IMVCRepository<T>para um acesso a dados limpo e testável - Serialização automática: objetos, records, listas e datasets são serializados automaticamente
Aprenda na prática: mais de 100 projetos de exemplo
A melhor maneira de aprender o DMVCFramework é explorar código que funciona. O projeto inclui mais de 100 projetos de exemplo, que cobrem todos os recursos e casos de uso. Cada exemplo é independente e está pronto para compilar.
Encontre o exemplo que corresponde ao que você precisa construir, abra no Delphi e comece a experimentar!
📦 Todos os exemplos: github.com/danieleteti/delphimvcframework/tree/master/samples
“Quero criar meu primeiro projeto com o DMVCFramework”
| Exemplo | Descrição |
|---|---|
basicdemo_server | Configuração mínima de servidor - comece por aqui |
functional_actions_showcase | Padrão moderno de functional actions |
console_sample | Aplicação console simples |
“Quero criar uma API REST”
| Exemplo | Descrição |
|---|---|
simple_api_using_mvcactiverecord | API REST com ORM |
simple_api_using_repository_with_injection | Padrão Repository + injeção de dependência |
simple_api_using_datasets | Retorne um TDataSet como JSON |
routing | Parâmetros de URL, segmentos de caminho, query strings |
validators | Validadores de entrada, integrados e customizados |
file_upload | Tratamento de uploads multipart/form-data |
“Quero adicionar autenticação e segurança”
| Exemplo | Descrição |
|---|---|
jsonwebtoken | Noções básicas de JSON Web Token |
jsonwebtoken_roleauth | Autorização baseada em roles com JWT |
middleware_jwtwithcookiehttponly | Cookie HTTP-only seguro para o JWT |
middleware_basicauthentication | Autenticação HTTP Basic |
custom_auth | Implemente o seu próprio handler de autenticação |
middleware_cors | Cross-Origin Resource Sharing |
middleware_ratelimit_memory | Rate limiting (em memória) |
middleware_ratelimit_redis | Rate limiting (com Redis) |
“Quero comunicação em tempo real”
| Exemplo | Descrição |
|---|---|
websocket_primer | Introdução ao WebSocket |
websocket_chat | Aplicação de chat multiusuário |
websocket_groups | Mensagens baseadas em canais |
websocket_javascript_client_sample | Exemplo de cliente no navegador |
serversentevents | Server-Sent Events (notificações push) |
“Quero criar uma Minimal API”
| Exemplo | Descrição |
|---|---|
minimal_api | Rotas como métodos anônimos, binding de parâmetros por tipo, grupos de rotas para versões da API |
minimal_api_auth | Hooks do grupo de rotas: log de requests, autenticação por Bearer token, verificação de role |
minimal_api_webapp | Aplicação web renderizada no servidor com TemplatePro e HTMX, sem classe controller |
“Quero renderizar páginas HTML”
| Exemplo | Descrição |
|---|---|
serversideviews_templatepro | HTML com o engine TemplatePro |
serversideviews_mustache | HTML com o engine Mustache |
htmx | HTML dinâmico com HTMX |
htmx_website_with_templatepro | Site completo com HTMX + TemplatePro |
htmx_website_with_webstencils | Integração com o WebStencils do RAD Studio |
“Quero trabalhar com bancos de dados”
| Exemplo | Descrição |
|---|---|
activerecord_showcase | Demo completa do ORM |
activerecord_restful_crud | API RESTful com ActiveRecord |
master_details | Relacionamentos mestre-detalhe |
repository_showcase | Uso do IMVCRepository |
ado | Exemplo com Microsoft ADO |
“Quero usar JSON-RPC”
| Exemplo | Descrição |
|---|---|
jsonrpc | Implementação de um servidor JSON-RPC 2.0 |
“Quero personalizar o tratamento de request e response”
| Exemplo | Descrição |
|---|---|
middleware | Crie o seu próprio middleware |
middleware_compression | Respostas comprimidas com GZIP/Deflate |
middleware_etag | Cache HTTP com ETags |
middleware_staticfiles | Servir conteúdo estático |
middleware_analytics | Log e rastreamento de requests |
middleware_activerecord | Conexão com o banco por request |
action_filters | Hooks antes e depois da action |
custom_exception_handling | Respostas de erro customizadas |
renders | Serializers JSON customizados |
“Quero fazer deploy em produção”
| Exemplo | Descrição |
|---|---|
windows_service | Execução como serviço do Windows |
apache_module | Deploy atrás do Apache |
isapi | Deploy no IIS |
ssl_server | Configuração de HTTPS |
tls13 | Configuração moderna com TLS 1.3 |
“Quero documentar a minha API”
| Exemplo | Descrição |
|---|---|
swagger_primer | Noções básicas de documentação OpenAPI |
swagger_ui | Explorador interativo da API |
swagger_doc_extended | Recursos avançados de documentação |
“Quero recursos avançados”
| Exemplo | Descrição |
|---|---|
mvcasync | Actions assíncronas |
outputcachewithredis | Cache de respostas com Redis |
prometheus | Integração com o monitoramento do Prometheus |
services_injection | Injeção de dependência |
dotenv_showcase | Configuração do ambiente com arquivos .env |
sqids_showcase | IDs curtos e únicos (Sqids) |
Projetos open source relacionados
O DMVCFramework se integra com facilidade a outros projetos open source do mesmo autor:
| Projeto | Descrição | Uso com o DMVCFramework |
|---|---|---|
| LoggerPro | Framework de logging assíncrono com mais de 20 appenders | Adicione logging estruturado às suas APIs, com appenders de arquivo, banco de dados, Redis ou ElasticSearch |
| TemplatePro | Template engine poderoso, com sintaxe parecida com a do Jinja | Renderização de HTML no servidor, com o exemplo serversideviews_templatepro |
| DelphiRedisClient | Cliente Redis completo | Cache, armazenamento de sessões, rate limiting e recursos em tempo real |
| DelphiGuard | Gerenciamento de memória com RAII | Liberação automática de recursos em controllers e middlewares |
| Delphi Fake Data Utils | Gerador de dados de teste | Gere dados realistas para testes de API e demonstrações |
| Expression Evaluator | Parser de fórmulas em tempo de execução | Regras de negócio dinâmicas e campos calculados nas suas APIs |
| Delphi MCP | Toolkit com servidor, cliente e agente MCP | Exponha as tools, resources e prompts da sua aplicação DMVCFramework a assistentes de IA |
Compatibilidade com versões do Delphi
| Versão do 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 | ✅ | - |
Apoie o projeto
🎁 Torne-se um apoiador no Patreon
O DMVCFramework é gratuito e open source, mas mantê-lo e melhorá-lo exige um esforço considerável. Ao se tornar um Patron, você:
- Acessa conteúdo premium - Tutoriais exclusivos, exemplos avançados e prévias antecipadas
- Fala direto com o desenvolvedor - Suporte prioritário e comunicação direta com a equipe de desenvolvimento
- Ajuda a moldar o futuro - Influencie o roadmap e as prioridades dos recursos
- Apoia o open source - Ajude a manter o DMVCFramework gratuito para todos
Serviços profissionais
Precisa de suporte de nível corporativo? A bit Time Professionals, a empresa por trás do DMVCFramework, oferece:
- Cursos de treinamento - Treinamento presencial ou remoto para a sua equipe
- Consultoria - Revisão de arquitetura, otimização de desempenho, boas práticas
- Desenvolvimento sob medida - Desenvolvimento de funcionalidades, integração, migração
📧 Contato: dmvcframework@bittime.it | 🌐 bittimeprofessionals.it
Comunidade e recursos
| Recurso | Link |
|---|---|
| 📦 Repositório no GitHub | github.com/danieleteti/delphimvcframework |
| 📕 Guia oficial (livro) | O guia oficial, 2ª edição |
| 👥 Grupo no Facebook (mais de 6.000 membros) | facebook.com/groups/delphimvcframework |
| 🎁 Patreon (conteúdo premium) | patreon.com/delphimvcframework |
| 📖 Capítulo de amostra grátis | Ler no Leanpub |
FAQ: perguntas frequentes
O que é o DMVCFramework?
O DMVCFramework (DelphiMVCFramework) é um framework open source para criar web APIs, serviços RESTful, serviços Minimal API, aplicações web e servidores MCP em Delphi. É o framework web Delphi mais popular, usado em produção desde 2010, e o projeto Delphi #1 no GitHub em número de estrelas.
Qual é o melhor framework para APIs REST em Delphi?
O DMVCFramework é o framework mais popular e mais completo para criar APIs REST em Delphi. Suporta APIs RESTful (RMM Level 3), JSON-RPC, WebSocket, Server-Sent Events, autenticação JWT e inclui um ORM poderoso, o MVCActiveRecord.
Como criar uma API REST em Delphi?
Use o DMVCFramework: crie uma classe controller que herda de TMVCController, adicione os atributos [MVCPath] e [MVCHTTPMethods] para definir as rotas e retorne os dados direto dos seus métodos (functional actions). O framework serializa objetos, arrays e records para JSON automaticamente. Veja os mais de 100 exemplos incluídos.
Como retornar JSON em uma API REST em Delphi?
Com o DMVCFramework, basta retornar um objeto, um record ou um TObjectList<T> no método do controller. O framework o serializa para JSON automaticamente. Para ter mais controle, use os helpers OKResponse(data) ou CreatedResponse(location).
O DMVCFramework suporta autenticação JWT?
Sim, o DMVCFramework tem suporte integrado a JWT (JSON Web Token) para autenticação stateless. Suporta geração e validação de tokens, autorização baseada em roles e cookies HTTP-only seguros. Veja os exemplos jsonwebtoken e jsonwebtoken_roleauth.
Posso usar o DMVCFramework no Linux?
Sim, o DMVCFramework suporta totalmente o deploy em Linux a partir do Delphi 10.2 Tokyo. Você pode fazer o deploy como aplicação console ou daemon, com suporte a todos os recursos, incluindo WebSocket e SSL/TLS.
O DMVCFramework é gratuito?
Sim, o DMVCFramework é gratuito e open source, sob a licença Apache 2.0. Você pode usá-lo em projetos comerciais sem royalties. Se o redistribuir, a licença pede que você mantenha os avisos de copyright e uma cópia da licença.
Como obtenho suporte para o DMVCFramework?
Há várias opções de suporte: entre no grupo do Facebook (mais de 6.000 membros), explore os mais de 100 exemplos incluídos no projeto, leia o guia oficial (livro) ou torne-se um Patron para ter suporte prioritário e conteúdo exclusivo.
O DMVCFramework suporta WebSocket?
Sim, o DMVCFramework inclui suporte completo a WebSocket para comunicação bidirecional em tempo real. Os recursos incluem mensagens baseadas em canais, grupos e exemplos de cliente JavaScript. Também suporta Server-Sent Events (SSE) para notificações push do servidor para o cliente.
O que é o MVCActiveRecord?
O MVCActiveRecord é o ORM (Object-Relational Mapper) integrado ao DMVCFramework, que simplifica as operações com banco de dados. Usa atributos para o mapeamento de tabelas e colunas e suporta operações CRUD, relacionamentos e RQL (Resource Query Language) para consultas flexíveis.
Como faço o deploy do DMVCFramework em produção?
O DMVCFramework suporta várias opções de deploy: aplicação console do Windows, serviço do Windows, daemon no Linux, módulo do Apache (mod_proxy), IIS (DLL ISAPI) e ambientes com balanceamento de carga. Veja os exemplos de deploy para cada cenário.
O DMVCFramework suporta OpenAPI/Swagger?
Sim, o DMVCFramework pode gerar automaticamente a documentação OpenAPI (Swagger) das suas APIs. Use os exemplos swagger_primer e swagger_ui para adicionar documentação interativa da API ao seu projeto.
Como trato uploads de arquivos no DMVCFramework?
Use o objeto Context.Request para acessar os arquivos enviados. O exemplo file_upload mostra como tratar requests multipart/form-data, com o upload de um ou de vários arquivos.
Posso usar o DMVCFramework com FireDAC?
Sim, o DMVCFramework funciona com qualquer camada de acesso a dados, incluindo FireDAC, ADO e outras. O MVCActiveRecord usa o FireDAC por padrão, mas você pode usar a conexão que preferir.
Como implemento CORS no DMVCFramework?
Use o middleware de CORS integrado. Adicione o TMVCCORSMiddleware à configuração do servidor para habilitar requests cross-origin. Veja o exemplo middleware_cors para conhecer as opções de configuração.
Quais versões do Delphi o DMVCFramework suporta?
O DMVCFramework suporta do Delphi 10 Seattle ao Delphi 13 Florence, com suporte completo a Linux a partir do Delphi 10.2 Tokyo.
Como trato erros e exceções no DMVCFramework?
O DMVCFramework converte as exceções automaticamente em respostas de erro HTTP adequadas, com corpo em JSON. Para um tratamento de erros customizado, use raise EMVCException.Create() com status codes HTTP específicos ou implemente handlers de exceção customizados.
O DMVCFramework suporta injeção de dependência?
Sim, o DMVCFramework tem injeção de dependência integrada. Use o atributo [MVCInject] em construtores ou em parâmetros de métodos para injetar serviços e repositories automaticamente. Veja o exemplo services_injection.
O DMVCFramework suporta Minimal API?
Sim, a partir do 3.5.0-silicon. Você define rotas com MapGet, MapPost, MapPut e MapDelete e um método anônimo, sem classe controller. O binding dos argumentos é feito pelo tipo (serviços do container, corpo JSON, query string, parâmetros de rota) e os filtros ficam nos grupos de rotas. Veja o exemplo minimal_api e a introdução à Minimal API.
Posso criar aplicações web, e não só APIs?
Sim. O DMVCFramework renderiza HTML no servidor com o TemplatePro (Mustache e WebStencils também são suportados) e funciona com HTMX para atualizações parciais da página. As páginas podem vir de controllers ou de grupos de rotas da Minimal API. Veja os exemplos serversideviews_templatepro, htmx_website_with_templatepro e minimal_api_webapp.
Posso criar um servidor MCP com o DMVCFramework?
Sim. O Delphi MCP toolkit permite que uma aplicação DMVCFramework exponha tools, resources e prompts a assistentes de IA como Claude, Gemini ou ChatGPT por meio do Model Context Protocol, via HTTP ou stdio. O mesmo toolkit inclui um cliente e um agente de LLM.
Gratuito. Open source. Pronto para produção desde 2010.
⭐ Dê uma estrela no GitHub 📖 Adquira o guia oficial
Fatos principais
O DMVCFramework (DelphiMVCFramework) é o framework open source mais popular para criar APIs REST e aplicações web em Delphi/Object Pascal.
- Licença: Apache 2.0 (gratuito para uso comercial)
- Em produção: desde 2010
- GitHub: projeto Delphi #1 por estrelas (1.300+)
- Recursos: API REST (RMM Level 3), JSON-RPC 2.0, autenticação JWT, WebSocket, SSE, ORM MVCActiveRecord, injeção de dependência, Minimal API (3.5.0-silicon: rotas como métodos anônimos, sem classe controller), aplicações web renderizadas no servidor (TemplatePro, HTMX, WebStencils), servidores MCP (Delphi MCP toolkit)
- Plataformas: Windows (console, serviço, IIS, Apache), Linux (console, daemon)
- Versões do Delphi: do 10 Seattle ao 13 Florence
- Documentação: guia oficial (livro) disponível em inglês, português e espanhol
- Comunidade: 6.000+ desenvolvedores no grupo do Facebook
- Autor: Daniele Teti (bit Time Professionals)
- Casos de uso: APIs REST, microsserviços, backends para dispositivos móveis, aplicações em tempo real, aplicações web, servidores MCP que expõem uma aplicação a assistentes de IA

Comments