Udostępnij za pośrednictwem


Dokumentacja serwera proxy zasobu niestandardowego

W tym artykule opisano wymagania dotyczące punktów końcowych implementowania zasobów niestandardowych serwera proxy. Jeśli nie znasz dostawców zasobów niestandardowych platformy Azure, zapoznaj się z omówieniem dostawców zasobów niestandardowych.

Definiowanie punktu końcowego zasobu serwera proxy

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

Przykładowy niestandardowy dostawca zasobów:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "myCustomResources",
        "routingType": "Proxy",
        "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" musi obsługiwać żądanie i odpowiedź dla nowego interfejsu API na platformie Azure. W takim przypadku #resourceType* wygeneruje nowy interfejs API zasobów platformy Azure dla PUT, GETi DELETE do wykonania operacji CRUD na jednym zasobie, a także GET do pobrania wszystkich istniejących zasobów.

Uwaga

Pola id, namei type nie są wymagane, ale są potrzebne do zintegrowania zasobu niestandardowego z istniejącym ekosystemem platformy Azure.

Przykładowy zasób:

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

Dokumentacja parametrów:

Właściwość Sample Opis
name "{myCustomResourceName}" Nazwa zasobu niestandardowego.
typ "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}" Przestrzeń nazw typu zasobu.
identyfikator '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{myCustomResourceName}'
Identyfikator zasobu.

Tworzenie zasobu niestandardowego

Żądanie przychodzące interfejsu API platformy Azure:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resource-provider-name}/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 przesyłana z powrotem do klienta. Odpowiedź powinna zwrócić:

  • Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone w górnej części obiektu.
  • Nagłówek Content-Type powinien być ustawiony na wartość "application/json; charset=utf-8".

Odpowiedź punktu końcowego:

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

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 przesyłana z powrotem do klienta. Odpowiedź powinna zwrócić:

  • Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone w górnej części obiektu.
  • Nagłówek Content-Type powinien być ustawiony na wartość "application/json; charset=utf-8".

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

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

GET 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 przesyłana z powrotem do klienta. Odpowiedź powinna zwrócić:

  • Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone w górnej części obiektu.
  • Nagłówek Content-Type powinien być ustawiony na wartość "application/json; charset=utf-8".

Odpowiedź punktu końcowego:

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

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

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

GET 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

Odpowiedź z punktu końcowego jest następnie przesyłana z powrotem do klienta. Odpowiedź powinna zwrócić:

  • Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone w górnej części obiektu.
  • Nagłówek Content-Type powinien być ustawiony na wartość "application/json; charset=utf-8".
  • Lista zasobów powinna zostać umieszczona w ramach właściwości najwyższego poziomu value .

Odpowiedź punktu końcowego:

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

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