Partilhar via


Referência personalizada da cache de recursos

Este artigo irá abordar os requisitos para endpoints que implementam recursos personalizados de cache. Se não estiver familiarizado com os Fornecedores de Recursos Personalizados do Azure, consulte a visão geral sobre fornecedores de recursos personalizados.

Defina um endpoint de recurso de cache

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

Exemplo de fornecedor 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}"
}

Construir um endpoint de recurso proxy

Um endpoint que implementa um recurso "Proxy, Cache" deve gerir o pedido e a resposta para a nova API no Azure. Neste caso, o resourceType gerará uma nova API de recursos Azure para PUT, GET, e DELETE para executar CRUD num único recurso, bem como GET para recuperar todos os recursos existentes.

Observação

A API do Azure gera os métodos PUT de pedido, GET e DELETE, mas o endpoint da cache só precisa de lidar com PUT e DELETE. Recomendamos que o endpoint também implemente GET.

Crie um recurso personalizado

Azure API incoming request:

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

Este pedido será então encaminhado para o endpoint na forma de:

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 endpoint é então encaminhada de volta para o cliente. A resposta deverá devolver:

  • Um documento objeto JSON válido. Todos os arrays e strings devem estar aninhados sob um objeto principal.
  • O Content-Type cabeçalho deve ser definido como "application/json; charset=utf-8".
  • O fornecedor de recursos personalizados irá sobrescrever os namecampos , type, e id para o pedido.
  • O fornecedor de recursos personalizados só devolverá campos debaixo do objeto properties para um endpoint de cache.

Resposta do endpoint:

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

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

Os namecampos , id, e type serão automaticamente gerados para o recurso personalizado pelo fornecedor de recursos personalizados.

Resposta Azure Custom Resource Provider:

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

Azure API incoming request:

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

Este pedido será então encaminhado para o endpoint na forma:

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 endpoint é então encaminhada de volta para o cliente. A resposta deverá devolver:

  • Um documento objeto JSON válido. Todos os arrays e strings devem estar aninhados sob um objeto principal.
  • O Content-Type cabeçalho deve ser definido como "application/json; charset=utf-8".
  • O Azure Custom Resource Provider só removerá o item da sua cache se for devolvida uma resposta de nível 200. Mesmo que o recurso não exista, o endpoint deve devolver 204.

Resposta ao ponto final:

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

Resposta Azure Custom Resource Provider:

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

Recuperar um recurso personalizado

Azure API incoming request:

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

O pedido não será encaminhado para o endpoint.

Resposta do Azure Custom Resource Provider:

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

Azure API incoming request:

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

O pedido não será encaminhado para o endpoint.

Resposta Azure Custom Resource Provider:

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óximos passos