Partager via


Informations de référence sur le cache de ressources personnalisées

Cet article décrit les conditions requises pour les points de terminaison implémentant des ressources personnalisées du cache. Si vous n’êtes pas familiarisé avec les fournisseurs de ressources personnalisés Azure, consultez la vue d’ensemble des fournisseurs de ressources personnalisés.

Définir un point de terminaison de ressource de cache

Une ressource proxy peut être créée en spécifiant la routingType valeur « Proxy, Cache ».

Exemple de fournisseur de ressources personnalisé :

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

Créer un point de terminaison de ressource proxy

Un point de terminaison qui implémente un point de terminaison de ressource « Proxy, Cache » doit gérer la demande et la réponse pour la nouvelle API dans Azure. Dans ce cas, resourceType génère une nouvelle API de ressource Azure pour PUT, GETet DELETE exécute CRUD sur une seule ressource, ainsi que GET pour récupérer toutes les ressources existantes.

Note

L’API Azure génère les méthodes PUTde requête, GETet DELETE, mais le point de terminaison du cache doit uniquement gérer PUT et DELETE. Nous avons recommandé que le point de terminaison implémente GETégalement .

Créer une ressource personnalisée

Requête entrante de l’API 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"
        }
    }
}

Cette demande sera ensuite transférée au point de terminaison sous la forme suivante :

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 réponse du point de terminaison est ensuite renvoyée au client. La réponse doit retourner :

  • Document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json ; charset=utf-8".
  • Le fournisseur de ressources personnalisées remplace les champs name, type, et id pour la requête.
  • Le fournisseur de ressources personnalisé retournera uniquement les champs sous l'objet properties pour un point de terminaison de cache.

Réponse du point de terminaison :

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

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

Les champs name, id et type seront générés automatiquement pour la ressource personnalisée par le fournisseur de ressources personnalisé.

Réponse du fournisseur de ressources personnalisé 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"
        }
    }
}

Supprimer une ressource personnalisée

Requête entrante de l’API 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

Cette demande sera ensuite transférée au point de terminaison sous la forme suivante :

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 réponse du point de terminaison est ensuite renvoyée au client. La réponse doit retourner :

  • Document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json ; charset=utf-8".
  • Le fournisseur de ressources personnalisé Azure supprime uniquement l’élément de son cache si une réponse de 200 niveaux est retournée. Même si la ressource n’existe pas, le point de terminaison doit retourner 204.

Réponse du point de terminaison :

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

Réponse du fournisseur de ressources personnalisé Azure :

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

Récupérer une ressource personnalisée

Requête entrante de l’API 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 demande ne sera pas transférée au point de terminaison.

Réponse du fournisseur de ressources personnalisé 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"
        }
    }
}

Énumérer toutes les ressources personnalisées

Requête entrante de l’API 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 demande ne sera pas transférée au point de terminaison.

Réponse du fournisseur de ressources personnalisé 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"
                }
            }
        }
    ]
}

Étapes suivantes