Referencia de caché de recurso personalizado

En este artículo se analizarán los requerimientos de los puntos de conexión que implementan los recursos personalizados de caché. Si no está familiarizado con los proveedores de recursos personalizados de Azure, consulte la introducción a los proveedores de recursos personalizados.

Definición de un punto de conexión de recursos de caché

Puede crear un recurso de proxy si especifica routingType en "Proxy, Cache".

Proveedor de recursos personalizados de ejemplo:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "myCustomResources",
        "routingType": "Proxy, Cache",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus",
  "type": "Microsoft.CustomProviders/resourceProviders",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
  "name": "{resourceProviderName}"
}

Creación de un punto de conexión de recursos de proxy

Un punto de conexión que implementa un punto de conexión de recurso "Proxy, Cache" debe controlar la solicitud la respuesta de la API nueva en Azure. En este caso, resourceType generará una nueva API de recursos de Azure para que PUT, GET y DELETE ejecuten CRUD en un recurso único, así como para que GET recupere todos los recursos existentes.

Nota

Azure API generará los métodos de solicitud PUT, GET y DELETE, pero el punto de conexión de caché solo necesita controlar PUT y DELETE. Se recomienda que el punto de conexión también implemente GET.

Creación de un recurso personalizado

Solicitud entrante de Azure API:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

Esta solicitud se reenviará al punto de conexión de esta forma:

PUT https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

La respuesta del punto de conexión se reenvía de vuelta al cliente. La respuesta debe devolver:

  • Un documento de objeto JSON válido. Todas las matrices y cadenas deben estar anidadas bajo un objeto superior.
  • El encabezado Content-Type se debe establecer en "application/json; charset=utf-8".
  • El proveedor de recursos personalizado sobrescribirá los campos name, type y id de la solicitud.
  • El proveedor de recursos personalizado solo devolverá campos bajo el objeto properties para un punto de conexión de caché.

Respuesta del punto de conexión:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

El proveedor de recursos personalizado generará automáticamente los campos name, id y type para el recurso personalizado.

Respuesta del proveedor de recursos personalizado de Azure:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "name": "{myCustomResourceName}",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
    "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

Eliminación de un recurso personalizado

Solicitud entrante de Azure API:

Delete https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

Esta solicitud se reenviará al punto de conexión de esta forma:

Delete https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

La respuesta del punto de conexión se reenvía de vuelta al cliente. La respuesta debe devolver:

  • Un documento de objeto JSON válido. Todas las matrices y cadenas deben estar anidadas bajo un objeto superior.
  • El encabezado Content-Type se debe establecer en "application/json; charset=utf-8".
  • El proveedor de recursos personalizado de Azure solo quitará el elemento de la caché si se devuelve una respuesta de nivel 200. Incluso si el recurso no existe, el punto de conexión debe devolver 204.

Respuesta del punto de conexión:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

Respuesta del proveedor de recursos personalizado de Azure:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

Recuperación de un recurso personalizado

Solicitud entrante de Azure API:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

La solicitud no se reenviará al punto de conexión.

Respuesta del proveedor de recursos personalizado de Azure:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "name": "{myCustomResourceName}",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
    "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

Enumeración de todos los recursos personalizados

Solicitud entrante de Azure API:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

La solicitud no se reenviará al punto de conexión.

Respuesta del proveedor de recursos personalizado de Azure:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "value" : [
        {
            "name": "{myCustomResourceName}",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
            "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
            "properties": {
                "myProperty1": "myPropertyValue1",
                "myProperty2": {
                    "myProperty3" : "myPropertyValue3"
                }
            }
        }
    ]
}

Pasos siguientes