Informations de référence sur les caches de ressources personnalisées

Cet article passera par la configuration requise pour les points de terminaison mettant en œuvre des caches de ressources personnalisées. Pour plus d’informations sur les fournisseurs de ressources personnalisées Azure, consultez la présentation des fournisseurs de ressources personnalisées.

Définir un point de terminaison de ressource de cache

Vous pouvez créer une ressource de proxy en associant la valeur « Proxy, Cache » au paramètre routingType.

Exemple de fournisseur de ressources personnalisées :

{
  "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 type « Proxy, Cache » doit gérer la requête et la réponse de la nouvelle API dans Azure. Dans ce cas, le paramètre resourceType génère une nouvelle API de ressource Azure pour PUT, GET et DELETE afin d’exécuter CRUD sur une ressource unique, ainsi que GET pour récupérer toutes les ressources existantes.

Remarque

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

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 requête est 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 retransférée au client. La réponse doit renvoyer :

  • Un document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet de niveau 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ées renvoie uniquement les champs figurant sous l’objet properties pour un point de terminaison du 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 sont automatiquement générés par le fournisseur de ressources personnalisées pour la ressource personnalisée.

Réponse du fournisseur de ressources personnalisées 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 requête est 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 retransférée au client. La réponse doit renvoyer :

  • Un document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet de niveau supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json; charset=utf-8 ».
  • Le fournisseur de ressources personnalisées Azure supprime uniquement l’élément de son cache si une réponse de niveau 200 est renvoyée. Même si la ressource n’existe pas, le point de terminaison doit renvoyer la valeur 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ées 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 requête ne sera pas transmise au point de terminaison.

Réponse du fournisseur de ressources personnalisées 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 requête ne sera pas transmise au point de terminaison.

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