Udostępnij za pośrednictwem


Dokumentacja pamięci podręcznej zasobu niestandardowego

W tym artykule przedstawiono wymagania dotyczące punktów końcowych implementowania zasobów niestandardowych pamięci podręcznej. Jeśli nie znasz niestandardowych dostawców zasobów platformy Azure, zobacz omówienie niestandardowych dostawców zasobów.

Definiowanie punktu końcowego zasobu pamięci podręcznej

Zasób serwera proxy można utworzyć, określając wartość routingType "Proxy, Cache".

Przykładowy niestandardowy dostawca zasobów:

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

Tworzenie punktu końcowego zasobu serwera proxy

Punkt końcowy implementujący punkt końcowy zasobu "Proxy, Cache" musi obsługiwać żądanie i odpowiedź dla nowego interfejsu API na platformie Azure. W takim przypadku zasób resourceType wygeneruje nowy interfejs API zasobów platformy Azure dla PUT, GETi DELETE wykona operację CRUD w jednym zasobie, a także GET pobierze wszystkie istniejące zasoby.

Uwaga

Interfejs API platformy Azure wygeneruje metody żądań PUT, GETi DELETE, ale punkt końcowy pamięci podręcznej musi obsługiwać PUT tylko elementy i DELETE. Zalecamy również zaimplementowanie GETpunktu końcowego .

Tworzenie zasobu niestandardowego

Żądanie przychodzące interfejsu API platformy 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"
        }
    }
}

To żądanie zostanie następnie przekazane do punktu końcowego w formularzu:

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

Odpowiedź z punktu końcowego jest następnie przekazywana z powrotem do klienta. Odpowiedź powinna zostać zwrócona:

  • Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone pod górnym obiektem.
  • Nagłówek Content-Type powinien być ustawiony na "application/json; charset=utf-8".
  • Niestandardowy dostawca zasobów zastąpi namepola , typei id dla żądania.
  • Niestandardowy dostawca zasobów zwróci tylko pola w properties obiekcie dla punktu końcowego pamięci podręcznej.

Odpowiedź punktu końcowego:

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

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

Pola name, idi type zostaną automatycznie wygenerowane dla zasobu niestandardowego przez niestandardowego dostawcę zasobów.

Odpowiedź niestandardowego dostawcy zasobów platformy 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"
        }
    }
}

Usuwanie zasobu niestandardowego

Żądanie przychodzące interfejsu API platformy 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

To żądanie zostanie następnie przekazane do punktu końcowego w formularzu:

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}

Odpowiedź z punktu końcowego jest następnie przekazywana z powrotem do klienta. Odpowiedź powinna zostać zwrócona:

  • Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone pod górnym obiektem.
  • Nagłówek Content-Type powinien być ustawiony na "application/json; charset=utf-8".
  • Niestandardowy dostawca zasobów platformy Azure usunie element z pamięci podręcznej tylko wtedy, gdy zostanie zwrócona odpowiedź na poziomie 200. Nawet jeśli zasób nie istnieje, punkt końcowy powinien zwrócić wartość 204.

Odpowiedź punktu końcowego:

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

Odpowiedź niestandardowego dostawcy zasobów platformy Azure:

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

Pobieranie zasobu niestandardowego

Żądanie przychodzące interfejsu API platformy 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

Żądanie nie zostanie przekazane do punktu końcowego.

Odpowiedź niestandardowego dostawcy zasobów platformy 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"
        }
    }
}

Wyliczanie wszystkich zasobów niestandardowych

Żądanie przychodzące interfejsu API platformy 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

Żądanie nie zostanie przekazane do punktu końcowego.

Odpowiedź niestandardowego dostawcy zasobów platformy 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"
                }
            }
        }
    ]
}

Następne kroki