Gravar e ver replays
Um replay é uma resposta gravada servida de volta nas requisições que correspondem: você grava uma vez e reproduz para sempre, feito um videocassete. A primeira chamada que corresponde guarda o que a simulação respondeu, gerado ou buscado de um upstream; toda chamada seguinte que corresponder devolve aquela resposta guardada, marcada com o header X-Mockzilla-Source: replay. Use para manter um payload estável entre execuções de teste, para capturar uma vez a resposta de um backend de verdade e depois trabalhar sem ele, ou para escrever na mão a resposta exata que um fluxo precisa.
Como uma gravação corresponde
Cada gravação é arquivada sob uma chave montada com o método, o padrão de caminho, e os campos da requisição que você escolher:
- Os campos do body são caminhos JSON com pontos (
name,data.address.zip,items[0].sku) ou nomes de campo de formulário. - Os parâmetros de query vêm da query string da URL.
- Os parâmetros de caminho são os valores
{placeholder}do caminho. Eles são ignorados a não ser que você liste: por padrão/pets/1e/pets/2dividem uma gravação, e listarpetIddá a cada id a sua. - Nenhum campo quer dizer só o caminho: toda requisição para o endpoint divide uma gravação só.
Só os campos escolhidos importam; todo o resto da requisição é ignorado. Duas requisições com os mesmos valores nesses campos recebem a mesma gravação. Se um campo escolhido faltar em uma requisição, o replay pula aquela requisição inteira: nada é gravado e nada é reproduzido.
Gravar sem configurar nada
O caminho mais rápido não precisa de configuração: mande o header X-Mockzilla-Replay. Isso funciona em qualquer simulação publicada.
# Primeira chamada: grava a resposta (aqui: correspondência pelo campo "name" do body)
curl -X POST "https://api.mockz.io/app/your-org/your-sim/petstore/pets" \
-H "Content-Type: application/json" \
-H "X-Mockzilla-Replay: name" \
-d '{"name": "Rex", "tag": "checkout-flow"}'
# Toda chamada seguinte com name=Rex: devolve exatamente a mesma resposta
curl -X POST "https://api.mockz.io/app/your-org/your-sim/petstore/pets" \
-H "Content-Type: application/json" \
-H "X-Mockzilla-Replay: name" \
-d '{"name": "Rex", "tag": "different-tag-does-not-matter"}'Olhe os headers da resposta: a primeira chamada diz X-Mockzilla-Source: generated (ou upstream), a segunda diz X-Mockzilla-Source: replay.
O header nomeia os campos pelos quais corresponder. Nomes soltos são campos do body; os prefixos escolhem outras fontes, e ; separa eles:
# Vazio: usa a chave de correspondência configurada no app, ou só o caminho
-H "X-Mockzilla-Replay:"
# Dois campos do body
-H "X-Mockzilla-Replay: biller,reference"
# Campos de body, query e caminho juntos
-H "X-Mockzilla-Replay: body:reference;query:channel;path:paymentMethod"Configurar no app
A configuração substitui o header: os clientes chamam a simulação como qualquer outra API e as regras de gravação vivem junto da simulação. Abra Replays na barra lateral e escolha um serviço.
- Ligue a gravação. O padrão do app vale para todo serviço; um serviço pode sobrescrever. A pílula ao lado do título diz se a gravação está ligada para o que você está olhando.
- Escolha um endpoint e defina a chave de correspondência dele. A tabela mostra cada endpoint, a chave de correspondência dele e quantas gravações ele tem. Clique em uma linha:
O editor mostra o header X-Mockzilla-Replay exato para a chave que você montar, pronto para copiar. Ligar o replay aqui liga aquele endpoint sozinho; endpoints sem chave de correspondência dividem uma gravação por caminho.
- Replay automático, nas configurações do serviço, grava e reproduz os endpoints configurados sem nenhum header. Ligue quando o código que chama não puder ser mudado.
- Gravar só o upstream é para capturar um backend de verdade: as respostas geradas não são gravadas e devolvem um 502 no lugar, então uma sessão de gravação não enche de dado de mock sem ninguém ver.
- TTL define quanto tempo as gravações do upstream duram, caindo para o padrão do app, de 24 horas.
Ver e editar as gravações
O painel de cada endpoint lista as gravações dele pelos valores de correspondência, pelo status e pela origem: upstream foi capturada de um backend de verdade, generated do mock, manual foi escrita na mão.
- Edite o status, o tipo de conteúdo ou o corpo e salve; daí em diante o runtime serve a resposta editada para aquela chave. Gravar e depois ajustar o payload costuma ser mais rápido que escrever do zero.
- Nova gravação cria uma na mão antes de existir tráfego: defina os valores de correspondência, o status e o corpo, e o endpoint responde com ela desde a primeira requisição.
- Excluir gravação remove uma chave; Excluir todas esvazia o endpoint.
- As gravações do upstream expiram com o TTL. As manuais e as geradas não têm TTL e ficam até você apagar.
Uma gravação feita com um header improvisado em um caminho sem endpoint configurado aparece aqui do mesmo jeito, agrupada sob o caminho dela, então nada do que foi gravado fica invisível.
As chamadas reproduzidas aparecem no Histórico como qualquer outra requisição; o header da resposta é o que nomeia o replay como origem delas.
Veja Histórico de requisições.
O que ganha quando os recursos se empilham
Um acerto de replay corta caminho cedo: se uma gravação corresponde, ela responde, antes do cache e antes de o upstream ser chamado. Sem gravação correspondente a requisição segue como sempre, e na volta a resposta é capturada para a próxima vez. A injeção de latência e de erro continua valendo na ida, então um endpoint com replay pode continuar lento ou falhar de propósito.
Mover gravações entre simulações ou compartilhar elas com o time tem a própria página.