Referência de cache de recurso personalizado

Este artigo irá analisar os requisitos para pontos finais que implementam recursos personalizados em cache. Se não estiver familiarizado com os Fornecedores de Recursos Personalizados do Azure, veja a descrição geral dos fornecedores de recursos personalizados.

Definir um ponto final de recurso de cache

Pode criar um recurso proxy ao especificar o routingType para "Proxy, Cache".

Fornecedor de recursos personalizado de exemplo:

{
  "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 final de recurso de proxy

Um ponto final que implemente um ponto final de recurso "Proxy, Cache" tem de processar o pedido e a resposta para a nova API no Azure. Neste caso, o resourceType irá gerar uma nova API de recursos do Azure para PUT, GETe DELETE para executar CRUD num único recurso, bem como GET para obter todos os recursos existentes.

Nota

A API do Azure irá gerar os métodos PUTde pedido , GETe DELETE, mas o ponto final da cache só precisa de processar PUT e DELETE. Recomendamos que o ponto final também implemente GET.

Criar um recurso personalizado

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

Em seguida, este pedido será reencaminhado para o ponto final no formulário:

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

Em seguida, a resposta do ponto final é reencaminhada para o cliente. A resposta deve devolver:

  • Um documento de objeto JSON válido. Todas as matrizes e cadeias devem ser aninhadas num objeto superior.
  • O Content-Type cabeçalho deve ser definido como "aplicação/json; charset=utf-8".
  • O fornecedor de recursos personalizado substituirá os namecampos , typee id para o pedido.
  • O fornecedor de recursos personalizado só devolverá campos no properties objeto para um ponto final de cache.

Resposta do ponto final:

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

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

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

Resposta do Fornecedor de Recursos Personalizado 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

Pedido 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

Em seguida, este pedido será reencaminhado para o ponto final no formulário:

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}

Em seguida, a resposta do ponto final é reencaminhada para o cliente. A resposta deve devolver:

  • Um documento de objeto JSON válido. Todas as matrizes e cadeias devem ser aninhadas num objeto superior.
  • O Content-Type cabeçalho deve ser definido como "aplicação/json; charset=utf-8".
  • O Fornecedor de Recursos Personalizados do Azure só removerá o item da cache se for devolvida uma resposta de 200 níveis. Mesmo que o recurso não exista, o ponto final deve devolver 204.

Resposta do ponto final:

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

Resposta do Fornecedor de Recursos Personalizado do Azure:

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

Obter um recurso personalizado

Pedido 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

O pedido não será reencaminhado para o ponto final.

Resposta do Fornecedor de Recursos Personalizado 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

Pedido 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

O pedido não será reencaminhado para o ponto final.

Resposta do Fornecedor de Recursos Personalizado 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"
                }
            }
        }
    ]
}

Passos seguintes