Become a member!

DMVCFramework: framework Delphi para APIs REST, JSON-RPC e aplicações web

🌐
Esta página também está disponível em outros idiomas:
🇬🇧 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.

Logotipo do DMVCFramework

Estrelas no GitHubÚltimo commit no GitHubLicença
⬇️ Baixar a última release ⭐ GitHub (mais de 1,3 mil estrelas)

Comece por aqui: o guia oficial

DMVCFramework: o guia oficial, segunda edição, de Daniele Teti

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çãoIdiomaFormatoLink
2ª, 3.5.0-siliconInglêseBookComprar no Leanpub
1ª, 3.2.1-carbonInglêseBookComprar no Leanpub
1ª, 3.2.1-carbonInglêsCapa duraComprar na Lulu
1ª, 3.2.1-carbonPortuguês (BR)eBookComprar no Leanpub
1ª, 3.2.1-carbonEspanholeBookComprar 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ícioDescrição
Comprovado em produçãoUsado desde 2010 em projetos pequenos, médios e corporativos no mundo todo
Conjunto completo de recursosREST, JSON-RPC, JWT, WebSocket, SSE, ORM - tudo o que você precisa
Muito rápidoOtimizado para alto desempenho sob cargas de trabalho pesadas
Fácil de aprenderAPI intuitiva, com mais de 100 exemplos para você ficar produtivo rápido
Comunidade ativaMais de 6.000 desenvolvedores no grupo do Facebook prontos para ajudar
Mantido ativamenteAtualizaçõ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ãoDataDestaques
3.4.3-aluminiumjan 2026WebSocket, Rate Limiting, Padrão Repository, Delphi 13
3.4.2-magnesiumfev 2025Sessões via middleware, sessões em banco de dados
3.4.1-sodiumjan 2024Sempare Templates, Delphi 12, foVersion
3.4.0-neonset 2023Functional Actions, Named Queries, HTMX
3.3.0-fluorineabr 2023Delphi 11.3, Prometheus, records no Swagger
3.2.3-radiumfev 2023Profiler integrado, JSONRPC TObject
3.2.2-nitrogenset 2022Delphi 11, TMVCRESTClient, cache LRU
3.2.1-carbonnov 2020Referência ao guia oficial, snake_case
3.2.0-boronjul 2020Delphi 10.4, Swagger, tipos Nullable
3.1.0-lithiummar 2019Middleware aprimorado
3.0.0-hydrogen2018ORM MVCActiveRecord, arquitetura 3.x
2.x2015-2017Sé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 IMVCResponse com helpers como OKResponse() e CreatedResponse()
  • 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”

ExemploDescrição
basicdemo_serverConfiguração mínima de servidor - comece por aqui
functional_actions_showcasePadrão moderno de functional actions
console_sampleAplicação console simples

“Quero criar uma API REST”

ExemploDescrição
simple_api_using_mvcactiverecordAPI REST com ORM
simple_api_using_repository_with_injectionPadrão Repository + injeção de dependência
simple_api_using_datasetsRetorne um TDataSet como JSON
routingParâmetros de URL, segmentos de caminho, query strings
validatorsValidadores de entrada, integrados e customizados
file_uploadTratamento de uploads multipart/form-data

“Quero adicionar autenticação e segurança”

ExemploDescrição
jsonwebtokenNoções básicas de JSON Web Token
jsonwebtoken_roleauthAutorização baseada em roles com JWT
middleware_jwtwithcookiehttponlyCookie HTTP-only seguro para o JWT
middleware_basicauthenticationAutenticação HTTP Basic
custom_authImplemente o seu próprio handler de autenticação
middleware_corsCross-Origin Resource Sharing
middleware_ratelimit_memoryRate limiting (em memória)
middleware_ratelimit_redisRate limiting (com Redis)

“Quero comunicação em tempo real”

ExemploDescrição
websocket_primerIntrodução ao WebSocket
websocket_chatAplicação de chat multiusuário
websocket_groupsMensagens baseadas em canais
websocket_javascript_client_sampleExemplo de cliente no navegador
serversenteventsServer-Sent Events (notificações push)

“Quero criar uma Minimal API”

ExemploDescrição
minimal_apiRotas como métodos anônimos, binding de parâmetros por tipo, grupos de rotas para versões da API
minimal_api_authHooks do grupo de rotas: log de requests, autenticação por Bearer token, verificação de role
minimal_api_webappAplicação web renderizada no servidor com TemplatePro e HTMX, sem classe controller

“Quero renderizar páginas HTML”

ExemploDescrição
serversideviews_templateproHTML com o engine TemplatePro
serversideviews_mustacheHTML com o engine Mustache
htmxHTML dinâmico com HTMX
htmx_website_with_templateproSite completo com HTMX + TemplatePro
htmx_website_with_webstencilsIntegração com o WebStencils do RAD Studio

“Quero trabalhar com bancos de dados”

ExemploDescrição
activerecord_showcaseDemo completa do ORM
activerecord_restful_crudAPI RESTful com ActiveRecord
master_detailsRelacionamentos mestre-detalhe
repository_showcaseUso do IMVCRepository
adoExemplo com Microsoft ADO

“Quero usar JSON-RPC”

ExemploDescrição
jsonrpcImplementação de um servidor JSON-RPC 2.0

“Quero personalizar o tratamento de request e response”

ExemploDescrição
middlewareCrie o seu próprio middleware
middleware_compressionRespostas comprimidas com GZIP/Deflate
middleware_etagCache HTTP com ETags
middleware_staticfilesServir conteúdo estático
middleware_analyticsLog e rastreamento de requests
middleware_activerecordConexão com o banco por request
action_filtersHooks antes e depois da action
custom_exception_handlingRespostas de erro customizadas
rendersSerializers JSON customizados

“Quero fazer deploy em produção”

ExemploDescrição
windows_serviceExecução como serviço do Windows
apache_moduleDeploy atrás do Apache
isapiDeploy no IIS
ssl_serverConfiguração de HTTPS
tls13Configuração moderna com TLS 1.3

“Quero documentar a minha API”

ExemploDescrição
swagger_primerNoções básicas de documentação OpenAPI
swagger_uiExplorador interativo da API
swagger_doc_extendedRecursos avançados de documentação

“Quero recursos avançados”

ExemploDescrição
mvcasyncActions assíncronas
outputcachewithredisCache de respostas com Redis
prometheusIntegração com o monitoramento do Prometheus
services_injectionInjeção de dependência
dotenv_showcaseConfiguração do ambiente com arquivos .env
sqids_showcaseIDs curtos e únicos (Sqids)


Projetos open source relacionados

O DMVCFramework se integra com facilidade a outros projetos open source do mesmo autor:

ProjetoDescriçãoUso com o DMVCFramework
LoggerProFramework de logging assíncrono com mais de 20 appendersAdicione logging estruturado às suas APIs, com appenders de arquivo, banco de dados, Redis ou ElasticSearch
TemplateProTemplate engine poderoso, com sintaxe parecida com a do JinjaRenderização de HTML no servidor, com o exemplo serversideviews_templatepro
DelphiRedisClientCliente Redis completoCache, armazenamento de sessões, rate limiting e recursos em tempo real
DelphiGuardGerenciamento de memória com RAIILiberação automática de recursos em controllers e middlewares
Delphi Fake Data UtilsGerador de dados de testeGere dados realistas para testes de API e demonstrações
Expression EvaluatorParser de fórmulas em tempo de execuçãoRegras de negócio dinâmicas e campos calculados nas suas APIs
Delphi MCPToolkit com servidor, cliente e agente MCPExponha as tools, resources e prompts da sua aplicação DMVCFramework a assistentes de IA

Compatibilidade com versões do Delphi

Versão do 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✅-

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

Entre no Patreon →


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

RecursoLink
📦 Repositório no GitHubgithub.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átisLer 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.


DMVCFramework - O framework Delphi #1 para Web API
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