Informazioni di riferimento per la cache di risorse personalizzate

Questo articolo illustra i requisiti per gli endpoint che implementano risorse personalizzate cache. Se non si ha familiarità con i provider di risorse personalizzate di Azure, vedere la panoramica dei provider di risorse personalizzate.

Definire un endpoint di risorsa della cache

È possibile creare una risorsa proxy specificando routingType in "Proxy", “Cache”.

Esempio di provider di risorse personalizzate:

{
  "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}"
}

Creare un endpoint di risorsa proxy

Un endpoint che implementa un endpoint di risorsa "Proxy, Cache" deve gestire la richiesta e la risposta per la nuova API in Azure. In questo caso, il resourceType genererà una nuova API delle risorse di Azure per PUT, GET e DELETE per eseguire CRUD su una singola risorsa, nonché GET per recuperare tutte le risorse esistenti.

Nota

L'API di Azure genererà i metodi di richiesta PUT, GETe DELETE, ma è necessario che l'endpoint della cache gestisca solo PUT e DELETE. È consigliabile implementare anche l'endpoint GET.

Creare una risorsa personalizzata

Richiesta in ingresso dell'API di Azure:

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"
        }
    }
}

Questa richiesta verrà quindi inoltrata all'endpoint nel modulo:

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 risposta dell'endpoint viene quindi reinoltrata al cliente. La risposta deve restituire:

  • Un documento oggetto JSON valido. Tutte le matrici e le stringhe devono essere annidate in un oggetto superiore.
  • L'intestazione Content-Type deve essere impostata su "application/json; charset=utf-8".
  • Il provider di risorse personalizzate sovrascriverà i campi name, typee id per la richiesta.
  • Il provider di risorse personalizzate restituirà solo i campi nell'oggetto properties per un endpoint della cache.

Risposta dell'endpoint:

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

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

I campi name, ide type verranno generati automaticamente per la risorsa personalizzata dal provider di risorse personalizzate.

Risposta del provider di risorse personalizzate di 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"
        }
    }
}

Rimuovere una risorsa personalizzata

Richiesta in ingresso dell'API di Azure:

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

Questa richiesta verrà quindi inoltrata all'endpoint nel modulo:

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 risposta dell'endpoint viene quindi reinoltrata al cliente. La risposta deve restituire:

  • Un documento oggetto JSON valido. Tutte le matrici e le stringhe devono essere annidate in un oggetto superiore.
  • L'intestazione Content-Type deve essere impostata su "application/json; charset=utf-8".
  • Il provider di risorse personalizzate di Azure rimuoverà l'elemento dalla cache solo se viene restituita una risposta a 200 livelli. Anche se la risorsa non esiste, l'endpoint deve restituire il 204.

Risposta dell'endpoint:

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

Risposta del provider di risorse personalizzate di Azure:

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

Recuperare una risorsa personalizzata

Richiesta in ingresso dell'API di Azure:

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 richiesta non verrà inoltrata all'endpoint.

Risposta del provider di risorse personalizzate di 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"
        }
    }
}

Enumerare tutte le risorse personalizzate

Richiesta in ingresso dell'API di Azure:

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 richiesta non verrà inoltrata all'endpoint.

Risposta del provider di risorse personalizzate di 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"
                }
            }
        }
    ]
}

Passaggi successivi