Compartir a través de


Simular respuestas simuladas a través de Internet

El uso de Dev Proxy es la manera más fácil de simular una API. Tanto si va a compilar el front-end como si la API aún no está lista, debe integrar el back-end con un servicio externo o desea probar la aplicación con respuestas diferentes, el proxy de desarrollo puede ayudarle a simular respuestas de API. Al integrar la API con servicios en la nube, debe exponer la API a través de Internet para que el servicio en la nube pueda acceder a ella. Para exponer respuestas simuladas por el Dev Proxy en Internet, use Túneles de desarrollo. En este artículo se explica cómo configurar respuestas ficticias para exponerse a través de Internet mediante túneles de desarrollo.

Definición de respuestas ficticias

Para exponer respuestas simuladas por Dev Proxy a través de Internet, empiece por configurar los mocks.

Importante

En este momento, los túneles de desarrollo solo admiten la exposición de respuestas ficticias HTTP a través de Internet.

Crear respuestas ficticias

Cree un archivo denominado mocks.json que contenga las respuestas ficticias de la API personalizada. Por ejemplo, para simular una GET solicitud a http://api.contoso.com/products, defina:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "request": {
        "url": "http://api.contoso.com/products",
        "method": "GET"
      },
      "response": {
        "headers": [
          {
            "name": "content-type",
            "value": "application/json"
          }
        ],
        "body": [
          {
            "id": 1,
            "name": "Contoso Coffee Beans",
            "price": 12.99
          },
          {
            "id": 2,
            "name": "Contoso Espresso Machine",
            "price": 249.99
          }
        ]
      }
    }
  ]
}

También puede simular errores, respuestas binarias o respuestas condicionales mediante statusCode, ntho bodyFragment.

Configuración de MockResponsePlugin

Cree un archivo de configuración del proxy de desarrollo denominado devproxyrc.json y habilite :MockResponsePlugin

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mocksPlugin"
    }
  ],
  "urlsToWatch": [
    "http://api.contoso.com/*"
  ],
  "mocksPlugin": {
    "mocksFile": "mocks.json"
  }
}

Importante

Para obtener coincidencias de múltiples puntos de conexión, use caracteres comodín en urlsToWatch. Para garantizar la coincidencia correcta, coloque primero los bocetos más específicos en mocks.json.

Comprobación de la configuración

Compruebe que los simulacros funcionan correctamente mediante la ejecución del proxy de desarrollo y el envío de solicitudes a la API simulada.

Inicie el proxy de desarrollo, suponiendo que guardó la configuración del proxy de desarrollo en un archivo denominado devproxyrc.json en el directorio de trabajo actual:

devproxy

Pruebe el simulacro mediante el envío de una solicitud a través del proxy de desarrollo:

curl -x http://127.0.0.1:8000 http://api.contoso.com/products

Debe recibir la lista de productos ficticios definida en mocks.json.

Exposición de la API ficticia con túneles de desarrollo

Para exponer respuestas ficticias a través de Internet, inicie un túnel de desarrollo asignado al puerto del proxy de desarrollo. Configure el túnel para usar el nombre de host configurado para la API simulada.

Advertencia

Permitir el acceso anónimo a un túnel de desarrollo significa que cualquier persona de Internet puede conectarse al servidor local, si pueden adivinar el identificador del túnel de desarrollo.

devtunnel host -p 8000 -a --host-header api.contoso.com

Este comando asigna el puerto proxy de desarrollo a una dirección URL HTTP pública. Ahora puede acceder a la API ficticia desde cualquier lugar:

curl http://<your-tunnel-id>-8000.<region>.devtunnels.ms/products