Simular una API CRUD

De un vistazo
Objetivo: Crear una API dinámica ficticia con operaciones CRUD completas
Tiempo: 15 minutos
Plugins:CrudApiPlugin
Requisitos previos:Configuración del proxy de desarrollo

Al desarrollar aplicaciones, a menudo interactúas con las API del backend. A veces, estas API aún no están disponibles u otros equipos los están actualizando para cumplir los requisitos más recientes. Para evitar esperar, normalmente se crea una API ficticia que devuelve los datos que necesita. Aunque este enfoque le desbloquea, requiere que dedique tiempo a crear una API que finalmente reemplace por la real. Para evitar perder el tiempo, puede usar dev Proxy para simular una API CRUD y acelerar el desarrollo.

Con el CrudApiPlugin, puede simular una API CRUD (Crear, Leer, Actualizar, Eliminar) con un almacenamiento de datos en memoria. Con un archivo de configuración simple, puede definir qué direcciones URL admite la API ficticia y qué datos devuelve. El complemento también admite CORS para el uso entre dominios desde aplicaciones del lado cliente.

Mientras que MockResponsePlugin permite definir respuestas simuladas estáticas, CrudApiPlugin permite definir una API simulada dinámica que puedes usar para interactuar con los datos y ver tus cambios reflejados en el conjunto de datos simulado.

Escenario

Supongamos que va a crear una aplicación que permita a los usuarios administrar clientes. Para obtener los datos, tiene que llamar al endpoint /customers de la API del backend. Para evitar esperar a que el equipo back-end finalice su trabajo, decide usar el proxy de desarrollo para simular la API y devolver los datos que necesita.

Empiece por habilitar CrudApiPlugin y configurarlo para usar el customers-api.json archivo.

Archivo:devproxyrc.json (instancia del complemento)

{
  "name": "CrudApiPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "customersApi"
}

Archivo:devproxyrc.json (sección de configuración)

{
  "customersApi": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.schema.json",
    "apiFile": "customers-api.json"
  }
}

En el customers-api.json archivo, se define la API de clientes ficticios.

Archivo: customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

En la baseUrl propiedad , se define la dirección URL base de la API ficticia. En la dataFile propiedad , se define el archivo que contiene datos ficticios del cliente. En la actions propiedad , se definen las acciones admitidas y cómo se asignan a los métodos y direcciones URL HTTP. Quiere usar la API para:

  • recuperar todos los clientes mediante una llamada a GET /v1/customers
  • obtener un solo cliente mediante una llamada a GET /v1/customers/{customer-id}
  • agregue un nuevo cliente mediante una llamada a POST /v1/customers,
  • actualizar un cliente, llamando a PATCH /v1/customers/{customer-id},
  • eliminar un cliente mediante una llamada a DELETE /v1/customers/{customer-id}

En tus URL, usas el parámetro {customer-id}, que el complemento reemplaza por el ID real del cliente de la URL. El complemento también usa el {customer-id} parámetro en una consulta JSONPath para buscar al cliente en el archivo de datos.

En el customers-data.json archivo, se definen los datos ficticios del cliente.

Archivo:customers-data.json

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]

Inicia Dev Proxy y llama al punto de conexión https://api.contoso.com/v1/customers. Dev Proxy intercepta la solicitud y devuelve los datos ficticios del cliente.

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]

Paso siguiente

Obtenga más información sobre CrudApiPlugin.

Ejemplos

Consulte también los ejemplos relacionados con Dev Proxy:

Consulte también