Quando você simula uma API pela linha de comando, a licença importa tanto quanto a lista de recursos. Um servidor de simulação cujo código-fonte você pode ler, hospedar-se e executar em CI sem contagem de assentos é algo muito diferente de um SaaS de simulação hospedado por trás de um login. Este guia aborda o lado de código aberto: ferramentas que você pode clonar, inspecionar e executar gratuitamente.
Cada ferramenta aqui está disponível com código-fonte sob uma licença permissiva (MIT ou Apache-2.0), reside em um repositório público do GitHub e pode ser auto-hospedada sem necessidade de conta. Esse é o filtro. Se você quer as opções menores, de binário único, classificadas por velocidade de inicialização e tamanho de instalação, leia as opções de servidores de simulação leves complementares; esta lista é sobre código-fonte e auto-hospedagem, então uma plataforma auto-hospedável mais robusta ainda pode ganhar um lugar.
Para cada ferramenta, você obtém a licença, o comando de instalação e execução que prova seu funcionamento, em que ela é melhor e onde fica aquém. Se você quer o campo mais amplo, incluindo opções comerciais, o resumo das melhores ferramentas de simulação de API e a visão geral das ferramentas de simulação de API REST abrangem mais.
Uma nota rápida e honesta antes da lista. Apidog não é de código aberto; é uma plataforma comercial freemium. Ele aparece uma vez no final como uma alternativa integrada a essas ferramentas, claramente rotulado, não como uma entrada de código aberto. Tudo nas seções numeradas abaixo é genuinamente de código aberto.
O que torna uma ferramenta de simulação CLI de código aberto
Três coisas decidem se uma ferramenta pertence a esta lista.
Licença. O código-fonte deve ser público sob uma licença permissiva. Cada opção aqui é MIT ou Apache-2.0, então você pode ler, fazer fork e incluí-lo em seu próprio produto sem taxa de licença ou contagem de assentos.
Auto-hospedável. Você o executa em seu laptop, em um contêiner ou em seu próprio servidor. Sem plano de controle hospedado, sem "phone-home" (comunicação externa não solicitada), sem barreira de conta. Isso é o que mantém uma simulação utilizável em um CI runner isolado.
Mantido abertamente. Um repositório público no GitHub com histórico de commits real, issues e releases. Estrelas são um sinal aproximado; commits recentes e releases marcadas são os melhores.
Observe o que não está na lista: velocidade bruta ou tamanho de instalação. Esses são o ângulo leve. Aqui, uma plataforma grande, baseada em contêiner e auto-hospedável é válida, desde que o código-fonte seja aberto e a licença seja gratuita.
Prism (Stoplight)
Prism transforma um arquivo OpenAPI ou Postman em um servidor de simulação ativo. Aponte-o para uma especificação e ele serve respostas de exemplo, valida requisições de entrada contra o esquema e pode funcionar como um proxy de validação na frente de uma API real. Licença: Apache-2.0. Repositório: stoplightio/prism.
npm install -g @stoplight/prism-cli
prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Esse comando inicializa uma simulação em http://127.0.0.1:4010 totalmente controlada pela especificação. GET /pets retorna o exemplo do seu documento OpenAPI; envie um payload inválido e o Prism informará qual parte do esquema você violou.
Melhor em: simulação de contrato orientada a especificação, onde o arquivo OpenAPI é a fonte da verdade. O modo de proxy de validação se destaca; ele detecta desvios entre sua especificação e sua API real.
Limitações: as respostas vêm dos seus exemplos e esquema, então as simulações são tão ricas quanto a especificação. Não há comportamento com estado embutido (nenhum "criar e depois ler de volta"). É uma ferramenta Node, então você precisa de um ambiente de execução Node.
Mockoon CLI
Mockoon é mais conhecido por seu aplicativo de desktop, mas o CLI oferece o mesmo motor sem GUI, construído para CI e auto-hospedagem. Você projeta um ambiente (no aplicativo ou manualmente) ou fornece um arquivo OpenAPI, e ele serve essa simulação. Licença: MIT. Repositório: mockoon/mockoon.
npm install -g @mockoon/cli
mockoon-cli start --data ./environment.json --port 3000
Você também pode iniciar diretamente de um arquivo OpenAPI com --data ./openapi.yaml. Adicione --watch para recarregar as alterações do arquivo e --log-transaction para imprimir logs completos de requisições/respostas.
Melhor em: respostas ricas e baseadas em regras sem escrever código. Mockoon suporta templating de resposta, regras condicionais e modo proxy, então um endpoint pode retornar diferentes corpos com base na requisição. Projetar visualmente no aplicativo e executar sem interface via CLI é uma separação limpa.
Limitações: o caminho de autoria mais agradável é o aplicativo de desktop, então a edição manual do JSON do ambiente é complicada. A sintaxe de templating dinâmico tem sua própria curva de aprendizado.
json-server
json-server é a maneira mais rápida de simular uma API REST. Forneça um arquivo JSON e ele gera rotas CRUD completas (GET, POST, PUT, PATCH, DELETE) com persistência real de volta para esse arquivo. Licença: MIT. Repositório: typicode/json-server.
npx json-server db.json
Com um db.json que possui um array "posts" de nível superior, você imediatamente obtém GET /posts, GET /posts/1, POST /posts e o restante, além de filtragem, ordenação e paginação via parâmetros de consulta. POSTar um novo registro o escreve no arquivo; lê-lo de volta e ele estará lá.
Melhor em: desenvolvimento frontend antes da existência do backend. Ele tem estado de forma nativa, o que Prism e a maioria das simulações orientadas a especificação não têm. Configuração zero, e npx significa que você nem precisa instalá-lo.
Limitações: é opinativo sobre o formato REST, então não corresponderá a uma API customizada arbitrária. Sem importação OpenAPI; o arquivo JSON é o contrato. Não é feito para testes de carga ou comportamento de produção.
WireMock
WireMock é o peso-pesado da simulação HTTP de código aberto, com milhões de downloads por mês. Ele é executado como um processo independente configurado por uma API de administração JSON ou por arquivos stub JSON, e lida com correspondência de requisições, templating de respostas, cenários com estado, injeção de falhas e gravação e reprodução. Licença: Apache-2.0. Repositório: wiremock/wiremock.
docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
curl -X POST http://localhost:8080/__admin/mappings \
-H 'Content-Type: application/json' \
-d '{"request":{"method":"GET","url":"/hello"},"response":{"status":200,"body":"world"}}'
A primeira linha inicia o WireMock; a segunda registra um stub através de sua API de administração. Agora, curl http://localhost:8080/hello retorna world. Você também pode colocar arquivos stub em um diretório mappings/ e montá-lo no contêiner.
Melhor em: cenários de teste complexos. Comportamento com estado, atrasos e falhas para simular um terceiro instável, e proxy-mais-gravação para capturar uma API real e reproduzi-la mais tarde. Esta é a ferramenta quando sua simulação precisa se comportar como a coisa real sob teste.
Limitações: é uma ferramenta JVM, então o contêiner ou um ambiente de execução Java é o preço de entrada. A superfície de configuração é grande; simulações simples parecem um exagero. Não há um único comando "ler uma especificação e ir" como o Prism tem.
MockServer
MockServer é um mock e proxy HTTP(S) em uma única porta, voltado diretamente para testes de integração. Ele simula APIs, pode fazer proxy e gravar tráfego ao vivo, e permite injetar falhas para testar como seu cliente as lida. Versões recentes adicionam suporte a HTTP/2, gRPC e WebSocket. Licença: Apache-2.0. Repositório: mock-server/mockserver.
docker run -d --rm -p 1080:1080 mockserver/mockserver
curl -X PUT 'http://localhost:1080/mockserver/expectation' \
-H 'Content-Type: application/json' \
-d '{"httpRequest":{"path":"/order"},"httpResponse":{"body":"{\"status\":\"ok\"}"}}'
O PUT registra uma "expectativa"; depois disso, curl http://localhost:1080/order retorna seu JSON. Os clientes do MockServer (Java, JavaScript, Ruby e outros) permitem que você defina as mesmas expectativas de dentro do seu código de teste, em vez de usar curl.
Melhor em: simulação e proxy no mesmo lugar, além de injeção de falhas. Se você precisa verificar se uma requisição específica foi feita um número específico de vezes, a API de verificação do MockServer é feita para isso. Bom para stacks pesadas em JVM. Veja nosso artigo sobre alternativas ao MockServer se ele não for exatamente o que você precisa.
Limitações: assim como o WireMock, é baseado em JVM e o JSON de expectativa é verboso. A sobreposição com WireMock é real; escolha um com base em qual biblioteca cliente se encaixa na sua stack de teste.
Microcks
Microcks é a escolha da plataforma, e é um projeto incubado da Cloud Native Computing Foundation. Ele transforma OpenAPI, AsyncAPI, gRPC, GraphQL, coleções Postman e projetos SoapUI em mocks ao vivo, e reutiliza esses mesmos contratos para executar testes de conformidade contra sua implementação real. Abrange protocolos orientados a eventos e assíncronos, não apenas HTTP. Licença: Apache-2.0. Repositório: microcks/microcks.
docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Isso executa a imagem "all-in-one"; abra http://localhost:8585 e importe uma especificação para obter endpoints de simulação. O microcks-cli complementar controla um servidor em execução a partir do CI:
microcks-cli import 'petstore.yaml:true' \
--microcksURL=http://localhost:8585/api \
--keycloakClientId=... --keycloakClientSecret=...
Melhor em: equipes que desejam um catálogo governado de simulações em muitas APIs e protocolos, com testes de contrato embutidos. A simulação assíncrona/orientada a eventos (Kafka, MQTT e similares) é rara neste espaço.
Limitações: este é um servidor, não um binário único. Uma ressalva importante: o microcks-cli aciona testes e importa artefatos contra uma instância Microcks em execução; ele não serve simulações por si só. Portanto, o CLI é um cliente, e você ainda executa a plataforma. Para uma simulação local única, isso é mais pesado do que Prism ou json-server.
Uma observação honesta: Apidog
Apidog não é de código aberto, então não tem um lugar numerado aqui. Mas se você percebeu que as ferramentas acima resolvem diferentes peças (mocks orientados a especificações, CRUD com estado, testes de contrato) e você preferiria não juntá-las, vale a pena mencionar. Apidog é uma plataforma freemium cujo nível gratuito inclui simulação, e apidog mock no apidog-cli permite gerenciar expectativas de simulação a partir do terminal junto com design, teste e documentação em um projeto. O mock inteligente gera valores de campo realistas a partir do seu esquema automaticamente, para que você não precise escrever corpos de exemplo manualmente.
A desvantagem é clara: você obtém um fluxo de trabalho integrado e um nível gratuito em vez de código aberto e auto-hospedagem. Se código aberto ou auto-hospedagem isolada é um requisito rígido, uma das seis ferramentas acima é sua resposta. Se um loop integrado de design a simulação importa mais, Apidog é a alternativa para juntar várias ferramentas.
Como escolher
| Ferramenta | Melhor para | Instalação | Licença | Notas |
|---|---|---|---|---|
| Prism | Mocks orientados a especificações + proxy de validação | npm i -g @stoplight/prism-cli |
Apache-2.0 | OpenAPI/Postman de entrada, mock de saída; sem estado |
| Mockoon CLI | Respostas baseadas em regras, sem código | npm i -g @mockoon/cli |
MIT | Projete no app, execute sem interface gráfica |
| json-server | REST falso com estado para frontend | npx json-server db.json |
MIT | CRUD completo com persistência, configuração zero |
| WireMock | Cenários de teste complexos, falhas | docker run wiremock/wiremock |
Apache-2.0 | JVM; gravação e reprodução; com estado |
| MockServer | Mock + proxy + verificação | docker run mockserver/mockserver |
Apache-2.0 | JVM; HTTP/2, gRPC, WebSocket |
| Microcks | Catálogo governado multi-API/protocolo | docker run microcks-uber |
Apache-2.0 | Plataforma CNCF; CLI é um cliente, não um servidor |
| Apidog (não OSS) | Design-to-mock integrado | npm i -g apidog-cli |
Freemium | Nível gratuito; apidog mock em um projeto |
Escolha pelo formato, não pela popularidade. Para uma simulação que lê seu arquivo OpenAPI e o aplica, comece com Prism. Para CRUD com estado antes da existência do backend, json-server ganha em velocidade. Para cenários de teste ricos com falhas e gravação/reprodução, WireMock ou MockServer; escolha pela biblioteca cliente. Para um catálogo compartilhado e multiprotocolo com testes de contrato, Microcks. Para qual formato se encaixa em qual situação, o guia de casos de uso de simulação de API mapeia ferramentas para cenários.
Conclusão
As ferramentas de simulação CLI de código aberto oferecem um servidor de simulação que você pode ler, auto-hospedar e executar em CI gratuitamente. Prism e json-server cobrem os casos comuns em um único comando; WireMock e MockServer lidam com os cenários de teste difíceis; Microcks escala para um catálogo governado entre protocolos. Todas as seis são MIT ou Apache-2.0, todas auto-hospedáveis, todas no GitHub público.
Se você preferir gerenciar simulações ao lado do design de sua API, testes e documentação sem juntar ferramentas separadas, baixe o Apidog e experimente apidog mock no nível gratuito. Não é de código aberto, mas é um único lugar para executar todo o ciclo da linha de comando para o CI.
