Delen via


Referentiemateriaal voor aangepaste resource-proxy

In dit artikel worden de vereisten besproken voor eindpunten die aangepaste proxyresources implementeren. Als u niet bekend bent met aangepaste resourceproviders van Azure, raadpleegt u het overzicht van aangepaste resourceproviders.

Een eindpunt voor een proxyresource definiëren

Een proxyresource kan worden gemaakt door de routingType op te geven op 'Proxy'.

Voorbeeld van een aangepaste resourceprovider:

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

Een proxyresource-eindpunt bouwen

Een eindpunt dat een proxyresource-eindpunt implementeert, moet de aanvraag en het antwoord voor de nieuwe API in Azure verwerken. In dit geval genereert de #resourceType* een nieuwe Azure-resource-API voor PUT, GETen DELETE om CRUD uit te voeren op één resource en GET om alle bestaande resources op te halen.

Notitie

De idvelden , nameen type zijn niet vereist, maar ze zijn wel nodig om de aangepaste resource te integreren met een bestaand Azure-ecosysteem.

Voorbeeldresource:

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

Naslaginformatie over parameters:

Eigenschap Voorbeeld Beschrijving
naam {myCustomResourceName}' De naam van de aangepaste resource.
type 'Microsoft.CustomProviders/resourceProviders/{resourceTypeName}' De naamruimte van het resourcetype.
id '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{myCustomResourceName}'
De resource-id.

Een aangepaste resource maken

Binnenkomende Azure API-aanvraag:

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

Deze aanvraag wordt vervolgens doorgestuurd naar het eindpunt in het volgende formulier:

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

Het antwoord van het eindpunt wordt vervolgens doorgestuurd naar de klant. Het antwoord moet het volgende retourneren:

  • Een geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
  • De Content-Type header moet worden ingesteld op 'application/json; charset=utf-8".

Antwoord van eindpunt:

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

Antwoord van aangepaste Azure-resourceprovider:

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

Een aangepaste resource verwijderen

Binnenkomende Azure API-aanvraag:

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

Deze aanvraag wordt vervolgens doorgestuurd naar het eindpunt in het volgende formulier:

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}

Het antwoord van het eindpunt wordt vervolgens doorgestuurd naar de klant. Het antwoord moet het volgende retourneren:

  • Geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
  • De Content-Type header moet worden ingesteld op 'application/json; charset=utf-8".

Antwoord van eindpunt:

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

Antwoord van aangepaste Azure-resourceprovider:

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

Een aangepaste resource ophalen

Binnenkomende Azure API-aanvraag:

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

Deze aanvraag wordt vervolgens doorgestuurd naar het eindpunt in het volgende formulier:

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}

Het antwoord van het eindpunt wordt vervolgens doorgestuurd naar de klant. Het antwoord moet het volgende retourneren:

  • Een geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
  • De Content-Type header moet worden ingesteld op 'application/json; charset=utf-8".

Antwoord van eindpunt:

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

Antwoord van aangepaste Azure-resourceprovider:

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

Alle aangepaste resources opsommen

Binnenkomende Azure API-aanvraag:

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

Deze aanvraag wordt vervolgens doorgestuurd naar het eindpunt in het volgende formulier:

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

Het antwoord van het eindpunt wordt vervolgens doorgestuurd naar de klant. Het antwoord moet het volgende retourneren:

  • Een geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
  • De Content-Type header moet worden ingesteld op 'application/json; charset=utf-8".
  • De lijst met resources moet onder de eigenschap op het hoogste niveau value worden geplaatst.

Antwoord van eindpunt:

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

Antwoord van aangepaste Azure-resourceprovider:

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

Volgende stappen