Informazioni di riferimento per la cache di risorse personalizzate

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

Definire un endpoint della risorsa cache

Una risorsa proxy può essere creata specificando la routingType proprietà "Proxy, Cache".

Provider di risorse personalizzato di esempio:

{
  "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 risorsa di Azure per PUT, GETe per eseguire CRUD in una singola risorsa, DELETE nonché GET per recuperare tutte le risorse esistenti.

Nota

L'API di Azure genererà i metodi PUTdi richiesta , GETe , DELETEma l'endpoint della cache deve PUT gestire e DELETE. È consigliabile implementare GETanche l'endpoint .

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

  • 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 personalizzato sovrascriverà i namecampi , typee id per la richiesta.
  • Il provider di risorse personalizzato 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 namecampi , ide type verranno generati automaticamente per la risorsa personalizzata dal provider di risorse personalizzato.

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

  • 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 personalizzato 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 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