Respostas simuladas
Usar o Dev Proxy é a maneira mais fácil de simular uma API. Se você está criando o front-end e a API ainda não está pronta, se precisa integrar seu back-end a um serviço externo ou se deseja testar seu aplicativo com respostas diferentes, o Dev Proxy pode ajudá-lo a simular respostas de API. O que é ótimo sobre o uso do Dev Proxy é que ele não requer nenhuma alteração no código do seu aplicativo. Você define respostas simuladas para qualquer API com a qual seu aplicativo interage e o Proxy de Desenvolvimento interceta as solicitações e responde com as respostas simuladas que você definiu.
Para simular respostas de API, você precisa fazer duas coisas:
- Crie um arquivo com respostas fictícias.
- Configure o Dev Proxy para usar as respostas simuladas.
Dica
Se utilizar o Visual Studio Code, considere instalar a extensão Dev Proxy Toolkit. Ele simplifica significativamente o trabalho com arquivos de configuração do Dev Proxy.
Criar um arquivo com respostas fictícias
O Dev Proxy simula as respostas da API usando o MockResponsePlugin
. O plugin permite que você defina um conjunto de respostas simuladas. Você define as simulações em um arquivo separado. O trecho de código a seguir demonstra uma resposta simulada simples para uma solicitação de GET
para https://jsonplaceholder.typicode.com/posts/1
.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
"mocks": [
{
"request": {
"url": "https://jsonplaceholder.typicode.com/posts/1",
"method": "GET"
},
"response": {
"statusCode": 200,
"body": {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
"headers": [
{
"name": "Date",
"value": "Wed, 19 Feb 2025 09:03:37 GMT"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"name": "Content-Length",
"value": "292"
},
// [...] trimmed for brevity
]
}
}
]
}
Dica
Em vez de criar o arquivo mocks manualmente, você pode usar o MockGeneratorPlugin
para gerar o arquivo mocks com base nas solicitações intercetadas.
Precedência da ordem
O Dev Proxy faz corresponder as simulações pela ordem em que as defines no ficheiro de simulações. Se você definir várias respostas com a mesma URL e método, o Dev Proxy usará a primeira resposta correspondente.
Quando o utilizador utiliza a configuração a seguir, o proxy responde a todas as solicitações de GET
para https://graph.microsoft.com/v1.0/me/photo
com 500 Internal Server Error
.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 500
}
},
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Suporte a curingas
O Dev Proxy suporta o uso de curingas na propriedade URL. Você pode usar o caractere asterisco (*
) para corresponder a qualquer série de caracteres no URL.
Quando você usa a configuração a seguir, o Dev Proxy responde a todas as solicitações para obter o perfil de qualquer usuário com a mesma resposta.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*"
},
"response": {
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": ["+1 425 555 0109"],
"displayName": "Adele Vance",
"givenName": "Adele",
"jobTitle": "Product Marketing Manager",
"mail": "AdeleV@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "18/2111",
"preferredLanguage": "en-US",
"surname": "Vance",
"userPrincipalName": "AdeleV@M365x214355.onmicrosoft.com",
"id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
}
}
}
Quando você usa a seguinte configuração, o Dev Proxy retorna a mesma imagem do disco quando você solicita para obter o binário da foto de qualquer usuário.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
Quando utiliza a configuração a seguir, o Dev Proxy retorna a mesma resposta quando solicita o perfil do utilizador atual com qualquer parâmetro de cadeia de consulta.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me?*"
},
"response": {
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": [
"+1 412 555 0109"
],
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Auditor",
"mail": "MeganB@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "12/1110",
"preferredLanguage": "en-US",
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
}
}
},
Responder com o conteúdo de um arquivo
Para manter seu arquivo de simulações limpo e organizado, você pode armazenar o conteúdo da resposta em um arquivo separado e fazer referência a ele no arquivo de simulações. Para instruir o Dev Proxy a carregar o corpo de resposta simulado de um ficheiro, defina a propriedade body
como @
, seguida pelo caminho do ficheiro relativo ao ficheiro simulado.
Por exemplo, a configuração de resposta simulada a seguir instrui o Dev Proxy a responder a qualquer solicitação para https://graph.microsoft.com/v1.0/me
com o conteúdo do arquivo response.json
localizado na mesma pasta que o arquivo simulado.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"response": {
"body": "@response.json",
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
Usar o token @
funciona com ficheiros de texto e binários .
Configurar o Proxy de Desenvolvimento para usar as respostas simuladas
Depois de criar o arquivo mocks, você precisa configurar o Dev Proxy para usar as respostas simuladas. Para configurar o Dev Proxy para simular respostas, adicione o MockResponsePlugin
à lista de plug-ins no arquivo devproxyrc.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "mockResponsePlugin"
}
],
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
"mockResponsePlugin": {
"mocksFile": "mocks.json"
},
"logLevel": "information",
"newVersionNotification": "stable",
"showSkipMessages": true
}
Primeiro, você adiciona o MockResponsePlugin
à lista de plugins. Você inclui uma referência à seção de configuração onde especifica o caminho para o arquivo fictício.
Quando você inicia o Dev Proxy, ele lê o arquivo de simulações e usa as respostas simuladas para responder às solicitações que correspondem às simulações definidas.
Suporte de solicitação não simulada
O Dev Proxy suporta a geração de um erro quando o proxy interceta uma solicitação não pré-programada. A capacidade de falhar solicitações não simuladas é útil para identificar solicitações que você perdeu em seu arquivo simulado.
Para habilitar esse recurso, adicione e habilite a configuração blockUnmockedRequests
para seção de configuração de MockResponsePlugin no arquivo devproxyrc.
{
"mocksPlugin": {
"mocksFile": "mocks.json",
"blockUnmockedRequests": true
}
}
Quando o Dev Proxy interceta uma solicitação que não pode simular, ele retorna uma resposta 502 Bad Gateway
.
Próximo passo
Saiba mais sobre o MockResponsePlugin.
Amostras
Consulte também os exemplos relacionados de Dev Proxy: