Referentiemateriaal voor aangepaste resource-cache

In dit artikel worden de vereisten besproken voor eindpunten die aangepaste cacheresources implementeren. Als u niet bekend bent met aangepaste resourceproviders van Azure, raadpleegt u het overzicht van aangepaste resourceproviders.

Een eindpunt voor een cacheresource definiëren

Een proxyresource kan worden gemaakt door de routingType op te geven op 'Proxy, Cache'.

Voorbeeld van een aangepaste resourceprovider:

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

Een proxyresource-eindpunt bouwen

Een eindpunt dat een resource-eindpunt proxy, cache implementeert, moet de aanvraag en het antwoord voor de nieuwe API in Azure verwerken. In dit geval genereert resourceType een nieuwe Azure-resource-API voor PUT, GETen DELETE om CRUD uit te voeren op één resource en GET om alle bestaande resources op te halen.

Notitie

De Azure-API genereert de aanvraagmethoden PUT, GETen DELETE, maar het cache-eindpunt hoeft alleen en DELETEte verwerkenPUT. Het is raadzaam dat het eindpunt ook implementeert GET.

Een aangepaste resource maken

Binnenkomende Azure API-aanvraag:

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

Deze aanvraag wordt vervolgens doorgestuurd naar het eindpunt in het volgende formulier:

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

Het antwoord van het eindpunt wordt vervolgens doorgestuurd naar de klant. Het antwoord moet het volgende retourneren:

  • Een geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
  • De Content-Type header moet worden ingesteld op 'application/json; charset=utf-8".
  • De aangepaste resourceprovider overschrijft de namevelden , typeen id voor de aanvraag.
  • De aangepaste resourceprovider retourneert alleen velden onder het properties object voor een cache-eindpunt.

Antwoord van eindpunt:

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

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

De namevelden , iden type worden automatisch gegenereerd voor de aangepaste resource door de aangepaste resourceprovider.

Antwoord van aangepaste Azure-resourceprovider:

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

Een aangepaste resource verwijderen

Binnenkomende Azure API-aanvraag:

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

Deze aanvraag wordt vervolgens doorgestuurd naar het eindpunt in het volgende formulier:

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}

Het antwoord van het eindpunt wordt vervolgens doorgestuurd naar de klant. Het antwoord moet het volgende retourneren:

  • Een geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
  • De Content-Type header moet worden ingesteld op 'application/json; charset=utf-8".
  • De aangepaste resourceprovider van Azure verwijdert het item alleen uit de cache als er een antwoord op het niveau van 200 wordt geretourneerd. Zelfs als de resource niet bestaat, moet het eindpunt 204 retourneren.

Antwoord van eindpunt:

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

Antwoord van aangepaste Azure-resourceprovider:

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

Een aangepaste resource ophalen

Binnenkomende Azure API-aanvraag:

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

De aanvraag wordt niet doorgestuurd naar het eindpunt.

Antwoord van aangepaste Azure-resourceprovider:

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

Alle aangepaste resources opsommen

Binnenkomende Azure API-aanvraag:

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

De aanvraag wordt niet doorgestuurd naar het eindpunt.

Antwoord van aangepaste Azure-resourceprovider:

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

Volgende stappen