Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Simula respuestas.
Ejemplo de configuración
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
],
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Propiedades de configuración
| Propiedad | Descripción | Predeterminado |
|---|---|---|
mocksFile |
Ruta de acceso al archivo que contiene respuestas ficticias | mocks.json |
blockUnmockedRequests |
Devolver 502 Bad Gateway respuesta para las solicitudes que no se simulan |
false |
Opciones de línea de comandos
| Nombre | Descripción | Predeterminado |
|---|---|---|
-n, --no-mocks |
Deshabilitar la carga de solicitudes ficticias | false |
--mocks-file |
Ruta de acceso al archivo que contiene respuestas ficticias | - |
Ejemplos de archivos ficticios
A continuación se muestran ejemplos de objetos ficticios.
Responder con cuerpo
Respuesta a una solicitud con una respuesta 200 OK y un cuerpo JSON.
Archivo: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"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"
},
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
]
}
Respuesta con error
Responda a una solicitud con una respuesta 404 No encontrada.
Archivo: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Respuesta con datos binarios
Responda a una solicitud con una imagen binaria cargada desde un archivo en el disco.
Archivo: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value",
"method": "GET"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
]
}
Responder a nth petición
Responda solo a la segunda solicitud coincidente. El proxy de desarrollo pasa otras solicitudes a la API.
Archivo: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/external/connections/*/operations/*",
"method": "GET",
"nth": 2
},
"response": {
"statusCode": 200,
"body": {
"id": "1.neu.0278337E599FC8DBF5607ED12CF463E4.6410CCF8F6DB8758539FB58EB56BF8DC",
"status": "completed",
"error": null
}
}
}
]
}
Respuesta que coincida con el cuerpo de la solicitud
Responda a una solicitud que contenga una cadena específica en el cuerpo.
Archivo: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://login.microsoftonline.com/fa15d692-e9c7-4460-a743-29f29522229/oauth2/v2.0/token",
"method": "POST",
"bodyFragment": "scope=https%3A%2F%2Fapi.contoso.com%2FDocuments.Read"
},
"response": {
"headers": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU..."
}
}
}
]
}
Reflejo de los datos de solicitud en respuesta
Responda con los datos que reflejan los valores del cuerpo de la solicitud mediante @request.body.* marcadores de posición.
Archivo: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users",
"method": "POST"
},
"response": {
"statusCode": 201,
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "12345678-1234-1234-1234-123456789abc",
"businessPhones": "@request.body.businessPhones",
"displayName": "@request.body.displayName",
"givenName": "@request.body.givenName",
"jobTitle": "@request.body.jobTitle",
"mail": "@request.body.mail",
"userPrincipalName": "@request.body.userPrincipalName",
"accountEnabled": "@request.body.accountEnabled",
"createdDateTime": "2024-01-15T10:30:00Z"
},
"headers": [
{
"name": "Content-Type",
"value": "application/json; odata.metadata=minimal"
},
{
"name": "Location",
"value": "https://graph.microsoft.com/v1.0/users/12345678-1234-1234-1234-123456789abc"
}
]
}
}
]
}
Dada la solicitud siguiente:
POST https://graph.microsoft.com/v1.0/users
Content-Type: application/json
{
"displayName": "Megan Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"accountEnabled": true,
"givenName": "Megan",
"surname": "Bowen",
"jobTitle": "Product Manager"
}
La respuesta es:
HTTP/1.1 200 Connection Established
Content-Length: 0
HTTP/1.1 201 Created
Cache-Control: no-store
x-ms-ags-diagnostic:
Strict-Transport-Security:
request-id: 12345678-1234-1234-1234-123456789abc
client-request-id: 12345678-1234-1234-1234-123456789abc
Date: 9/10/2025 10:28:35 AM
Content-Type: application/json; odata.metadata=minimal
Location: https://graph.microsoft.com/v1.0/users/12345678-1234-1234-1234-123456789abc
OData-Version: 4.0
Content-Length: 648
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "12345678-1234-1234-1234-123456789abc",
"businessPhones": null,
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Product Manager",
"mail": null,
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null,
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"accountEnabled": true,
"createdDateTime": "2024-01-15T10:30:00Z",
"department": null,
"companyName": null,
"city": null,
"country": null,
"postalCode": null,
"state": null,
"streetAddress": null,
"usageLocation": null
}
Propiedades de archivo simuladas
| Propiedad | Descripción | Obligatorio |
|---|---|---|
request |
Objeto request que define la solicitud a la que responder | Sí |
response |
Objeto response que define la respuesta que se va a devolver | Sí |
Request (objeto)
Cada solicitud tiene las siguientes propiedades:
| Propiedad | Descripción | Obligatorio | Valor predeterminado | Valor de ejemplo |
|---|---|---|---|---|
url |
Dirección URL absoluta a un punto de conexión de API al que responder | Sí | https://jsonplaceholder.typicode.com/posts |
|
method |
Verbo HTTP usado para hacer coincidir la solicitud con url |
No | GET |
GET |
nth |
Responda solo a la nª solicitud interceptada que coincida con el methodelemento ficticio , urly bodyFragment |
No | 2 |
|
bodyFragment |
Cadena que debe estar presente en el cuerpo de la solicitud | No | foo |
Observaciones
Use asterisco (*) en la url propiedad si desea que coincida con cualquier serie de caracteres de la dirección URL. Por ejemplo, https://jsonplaceholder.typicode.com/* coincide con https://jsonplaceholder.typicode.com/posts y https://jsonplaceholder.typicode.com/comments. En tiempo de ejecución, el proxy de desarrollo convierte cada uno * en una expresión .*regular .
El proxy de desarrollo omite mayúsculas y minúsculas al hacer coincidir la url propiedad con la dirección URL de la solicitud. Por ejemplo, un simulacro para https://jsonplaceholder.typicode.com/Posts coincide con una solicitud a https://jsonplaceholder.typicode.com/posts. Si define varios simulacros para el mismo método con direcciones URL que solo difieren en mayúsculas y minúsculas, El proxy de desarrollo usa el primer simulacro coincidente.
Al definir simulacros, coloque primero los simulacros más específicos. Por ejemplo, si tiene dos simulación, una para https://jsonplaceholder.typicode.com/posts y otra para https://jsonplaceholder.typicode.com/*, coloque primero la primera simulación. De lo contrario, el proxy de desarrollo coincide con el segundo simulacro primero y devuelve la respuesta de https://jsonplaceholder.typicode.com/* todas las solicitudes.
Use la nth propiedad si necesita enviar una respuesta diferente a la misma dirección URL de solicitud. Por ejemplo, úselo para simular una operación de larga duración. La primera vez que llame a la API, devuelve una respuesta con un inprogress mensaje. La segunda vez que se llama a la API, devuelve una respuesta con el completed mensaje. El proxy de desarrollo cuenta todas las solicitudes interceptadas que coincidan con el simulacro method, urly bodyFragment, independientemente de si devuelve o no una respuesta ficticia para ella. No necesita un simulacro de reserva para la misma dirección URL: si no se aplica ningún simulacro a una solicitud, el proxy de desarrollo lo pasa a la API. Para obtener más información sobre la nth propiedad , vea Solicitud ficticia nth.
Con la bodyFragment propiedad , puede hacer coincidir las solicitudes en función del contenido del cuerpo. Por ejemplo, si desea hacer coincidir las solicitudes que contienen la foo cadena en el cuerpo, establezca la bodyFragment propiedad fooen . El proxy de desarrollo solo usa bodyFragment para solicitudes distintas de GET.
Objeto Response
Cada respuesta tiene las siguientes propiedades:
| Propiedad | Descripción | Obligatorio | Valor predeterminado | Valor de ejemplo |
|---|---|---|---|---|
body |
Cuerpo que se va a enviar como respuesta a la solicitud | No | vacío | { "foo": "bar" } |
statusCode |
Código de estado HTTP de respuesta | No | 200 |
404 |
headers |
Matriz de encabezados que se van a incluir en la respuesta | No | vacío | [{ name: "content-type", "value": "application/json" }] |
Observaciones
Si establece la body propiedad en un objeto o matriz JSON, el proxy de desarrollo lo serializa en JSON. Si lo establece en una cadena, Dev Proxy envía la cadena as-is, sin comillas circundantes. Use un cuerpo de cadena para devolver texto sin formato, HTML, XML u otro contenido que no sea JSON. Dado que dev Proxy establece el content-type encabezado application/jsonen , también establece el encabezado para que coincida con el content-type contenido, por ejemplo text/plain.
Si desea devolver datos binarios, establezca la body propiedad en un valor de cadena que comience con @ seguido de la ruta de acceso del archivo con respecto al archivo ficticio. Por ejemplo, @picture.jpg devuelve la imagen almacenada en el archivo en el picture.jpg mismo directorio que el archivo ficticio.
Para reflejar los datos de solicitud en la respuesta, use @request.body.* marcadores de posición en el cuerpo de la respuesta. Por ejemplo, @request.body.displayName devuelve el valor de la displayName propiedad del cuerpo de la solicitud. Esta característica funciona con objetos anidados y matrices, lo que le permite crear respuestas dinámicas que reflejen los datos de solicitud entrantes. El reemplazo de marcador de posición admite varios tipos de valor JSON, como cadenas, números, booleanos y objetos complejos.