Compartilhar via


Referência de cache de recurso personalizado

Este artigo analisará os requisitos para endpoints que implementam recursos de cache personalizados. Se você não estiver familiarizado com provedores de recursos personalizados do Azure, confira a visão geral sobre provedores de recursos personalizados.

Definir um ponto de extremidade de recurso de cache

Um recurso de proxy pode ser criado especificando o routingType como "Proxy, Cache".

Exemplo de provedor de recursos personalizados:

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

Criar um ponto de extremidade de recurso de proxy

Um ponto de extremidade que implementa um ponto de extremidade do recurso de "Proxy, Cache" deve lidar com a solicitação e a resposta para a nova API no Azure. Nesse caso, o resourceType gerará uma nova API de recurso do Azure para PUT, GETe DELETE executará CRUD em um único recurso, bem como GET recuperará todos os recursos existentes.

Observação

A API do Azure gerará os métodos de solicitação PUT, GET e DELETE, porém, o ponto de extremidade de cache só precisa manipular PUT e DELETE. Recomendamos que o ponto de extremidade também implemente GET.

Criar um recurso personalizado

Solicitação de entrada da API do 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"
        }
    }
}

Esta solicitação será encaminhada para o endpoint no formato:

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

A resposta do ponto de extremidade é encaminhada de volta para o cliente. A resposta deve retornar:

  • Um documento de objeto JSON válido. Todas as matrizes e cadeias de caracteres devem ser aninhadas em um objeto superior.
  • O Content-Type cabeçalho deve ser definido como "application/json; charset=utf-8".
  • O provedor de recursos personalizado substituirá os campos name, type e id da solicitação.
  • O provedor de recursos personalizados retornará apenas campos sob o objeto properties para um ponto de extremidade de cache.

Resposta do ponto de extremidade:

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

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

Os campos name, id e type serão gerados automaticamente para o recurso personalizado pelo provedor de recursos personalizados.

Resposta do Provedor de Recursos Personalizados do 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"
        }
    }
}

Remover um recurso personalizado

Solicitação de entrada da API do 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

Esta solicitação será encaminhada para o endpoint no formato:

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}

A resposta do ponto de extremidade é encaminhada de volta para o cliente. A resposta deve retornar:

  • Um documento de objeto JSON válido. Todas as matrizes e cadeias de caracteres devem ser aninhadas em um objeto superior.
  • O Content-Type cabeçalho deve ser definido como "application/json; charset=utf-8".
  • O Provedor de Recursos Personalizados do Azure só removerá o item de seu cache se uma resposta de 200 níveis for retornada. Mesmo que o recurso não exista, o endpoint deverá retornar 204.

Resposta do ponto de extremidade:

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

Resposta do Provedor de Recursos Personalizados do Azure:

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

Recuperar um recurso personalizado

Solicitação de entrada da API do 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

A solicitação não será encaminhada para o ponto de extremidade.

Resposta do Provedor de Recursos Personalizados do 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"
        }
    }
}

Enumerar todos os recursos personalizados

Solicitação de entrada da API do 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

A solicitação não será encaminhada para o ponto de extremidade.

Resposta do Provedor de Recursos Personalizados do 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"
                }
            }
        }
    ]
}

Próximas etapas