Skapa referens för resurscache

Den här artikeln går igenom kraven för slutpunkter som implementerar anpassade cacheresurser. Om du inte är bekant med anpassade Resursprovidrar i Azure kan du läsa översikten över anpassade resursprovidrar.

Definiera en cacheresursslutpunkt

Du kan skapa en proxyresurs genom att routingType ange till "Proxy, Cache".

Exempel på anpassad resursprovider:

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

Skapa en proxyresursslutpunkt

En slutpunkt som implementerar resursslutpunkten "Proxy, Cache" måste hantera begäran och svaret för det nya API:et i Azure. I det här fallet genererar resourceType ett nytt Azure-resurs-API för PUT, GEToch DELETE för att utföra CRUD på en enda resurs samt GET för att hämta alla befintliga resurser.

Anteckning

Azure-API:et genererar förfrågningsmetoderna PUT, GEToch DELETE, men cacheslutpunkten behöver bara hantera PUT och DELETE. Vi rekommenderar att slutpunkten även implementerar GET.

Skapa en anpassad resurs

Inkommande begäran för Azure API:

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

Den här begäran vidarebefordras sedan till slutpunkten i formuläret:

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

Svaret från slutpunkten vidarebefordras sedan tillbaka till kunden. Svaret bör returnera:

  • Ett giltigt JSON-objektdokument. Alla matriser och strängar ska vara kapslade under ett översta objekt.
  • Rubriken Content-Type ska vara inställd på "application/json; charset=utf-8".
  • Den anpassade resursprovidern skriver över fälten name, typeoch id för begäran.
  • Den anpassade resursprovidern returnerar endast fält under properties objektet för en cacheslutpunkt.

Svar på slutpunkt:

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

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

Fälten name, idoch type genereras automatiskt för den anpassade resursen av den anpassade resursprovidern.

Svar från anpassad Azure-resursprovider:

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

Ta bort en anpassad resurs

Inkommande begäran för Azure API:

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

Den här begäran vidarebefordras sedan till slutpunkten i formuläret:

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}

Svaret från slutpunkten vidarebefordras sedan tillbaka till kunden. Svaret bör returnera:

  • Ett giltigt JSON-objektdokument. Alla matriser och strängar ska vara kapslade under ett översta objekt.
  • Rubriken Content-Type ska vara inställd på "application/json; charset=utf-8".
  • Den anpassade Azure-resursprovidern tar bara bort objektet från cacheminnet om ett svar på 200 nivåer returneras. Även om resursen inte finns ska slutpunkten returnera 204.

Svar på slutpunkt:

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

Svar från anpassad Azure-resursprovider:

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

Hämta en anpassad resurs

Inkommande begäran för Azure API:

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

Begäran vidarebefordras inte till slutpunkten.

Svar från anpassad Azure-resursprovider:

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

Räkna upp alla anpassade resurser

Inkommande begäran för Azure API:

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

Begäran vidarebefordras inte till slutpunkten.

Svar från anpassad Azure-resursprovider:

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ästa steg