Referenz zum benutzerdefinierten Ressourcencache

In diesem Artikel werden die Anforderungen an Endgeräte zur Implementierung benutzerdefinierter Cacheressourcen erläutert. Wenn Sie mit benutzerdefinierten Azure-Ressourcenanbietern nicht vertraut sind, siehe die Übersicht über benutzerdefinierte Ressourcenanbieter.

Definieren eines Endpunkts einer Cacheressource

Eine Proxyressource kann erstellt werden, indem routingType als „Proxy, Cache“ angegeben wird.

Beispiel eines benutzerdefinierten Ressourcenanbieters:

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

Erstellen des Ressourcenendpunkts eines Proxys

Ein Endpunkt, der einen Endpunkt einer Ressource des Typs „Proxy, Cache“ implementiert, muss die Anforderung und Antwort für die neue API in Azure verarbeiten. In diesem Fall erzeugt resourceType eine neue Azure-Ressourcen-API für PUT, GET und DELETE, um CRUD-Vorgänge (Create [Erstellen], Retrieve [Abrufen], Update [Aktualisieren], Delete [Löschen]) für eine einzelne Ressource auszuführen, sowie GET, um alle vorhandenen Ressourcen abzurufen.

Hinweis

Die Azure-API generiert die Anforderungsmethoden PUT, GET und DELETE, aber der Endpunkt des Caches muss nur PUT und DELETE verarbeiten. Es wird empfohlen, dass der Endpunkt auch GET implementiert.

Erstellen einer benutzerdefinierten Ressource

Azure-API – Eingehende Anforderung:

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

Diese Anforderung wird dann in folgender Form an den Endpunkt weitergeleitet:

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

Die Antwort wird vom Endpunkt dann an den Kunden zurückgesendet. Als Antwort sollte Folgendes zurückgegeben werden:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen müssen unter einem obersten Objekt geschachtelt sein.
  • Der Header Content-Type muss auf „application/json; charset=utf-8“ festgelegt werden.
  • Der benutzerdefinierte Ressourcenanbieter überschreibt die Felder name, type und id für die Anforderung.
  • Der benutzerdefinierte Ressourcenanbieter gibt für einen Cacheendpunkt nur Felder unter dem properties-Objekt zurück.

Antwort des Endpunkts:

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

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

Die Felder name, id und type werden vom benutzerdefinierten Ressourcenanbieter automatisch für die benutzerdefinierte Ressource generiert.

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

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

Entfernen einer benutzerdefinierten Ressource

Azure-API – Eingehende Anforderung:

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

Diese Anforderung wird dann in folgender Form an den Endpunkt weitergeleitet:

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}

Die Antwort wird vom Endpunkt dann an den Kunden zurückgesendet. Als Antwort sollte Folgendes zurückgegeben werden:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen müssen unter einem obersten Objekt geschachtelt sein.
  • Der Header Content-Type muss auf „application/json; charset=utf-8“ festgelegt werden.
  • Der benutzerdefinierte Azure-Ressourcenanbieter entfernt das Element nur dann aus seinem Cache, wenn eine Antwort der Stufe 200 zurückgegeben wird. Selbst wenn die Ressource nicht vorhanden ist, sollte der Endpunkt 204 zurückgeben.

Antwort des Endpunkts:

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

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

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

Abrufen einer benutzerdefinierten Ressource

Azure-API – Eingehende Anforderung:

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

Die Anforderung wird nicht an den Endpunkt weitergeleitet.

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

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

Aufzählen aller benutzerdefinierten Ressourcen

Azure-API – Eingehende Anforderung:

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

Die Anforderung wird nicht an den Endpunkt weitergeleitet.

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

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

Nächste Schritte