Copiar dados de e para um ponto de extremidade REST usando Azure Data FactoryCopy data from and to a REST endpoint by using Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo descreve como usar a atividade de cópia em Azure Data Factory para copiar dados de e para um ponto de extremidade REST.This article outlines how to use Copy Activity in Azure Data Factory to copy data from and to a REST endpoint. O artigo baseia-se em Atividade de Cópia no Azure Data Factory, que apresenta uma visão geral da Atividade de Cópia.The article builds on Copy Activity in Azure Data Factory, which presents a general overview of Copy Activity.

A diferença entre esse conector REST, o conector httpe o conector de tabela da Web são:The difference among this REST connector, HTTP connector, and the Web table connector are:

  • O conector REST oferece suporte especificamente à cópia de dados de APIs RESTful;REST connector specifically supports copying data from RESTful APIs;
  • O conector http é genérico para recuperar dados de qualquer ponto de extremidade http, por exemplo, para baixar o arquivo.HTTP connector is generic to retrieve data from any HTTP endpoint, for example, to download file. Antes desse conector REST se tornar disponível, você pode usar o conector HTTP para copiar dados do API RESTful, que é um suporte menos funcional em comparação ao conector REST.Before this REST connector becomes available, you may happen to use HTTP connector to copy data from RESTful API, which is supported but less functional comparing to REST connector.
  • O conector da tabela da Web extrai o conteúdo da tabela de uma página da Web em HTML.Web table connector extracts table content from an HTML webpage.

Funcionalidades com suporteSupported capabilities

Você pode copiar dados de uma origem REST para qualquer armazenamento de dados de coletor com suporte.You can copy data from a REST source to any supported sink data store. Você também pode copiar dados de qualquer armazenamento de dados de origem com suporte para um coletor REST.You also can copy data from any supported source data store to a REST sink. Para obter uma lista de armazenamentos de dados que o Copy Activity suporta como fontes e coletores, consulte Armazenamentos de dados e formatos compatíveis.For a list of data stores that Copy Activity supports as sources and sinks, see Supported data stores and formats.

Especificamente, esse conector REST genérico dá suporte para:Specifically, this generic REST connector supports:

  • Copiar dados de um ponto de extremidade REST usando os métodos Get ou post e copiando dados para um ponto de extremidade REST usando os métodos post, Put ou patch .Copying data from a REST endpoint by using the GET or POST methods and copying data to a REST endpoint by using the POST, PUT or PATCH methods.
  • Copiar dados usando uma das seguintes autenticações: anônima, básica, entidade de serviço do AAD e identidades gerenciadas para recursos do Azure.Copying data by using one of the following authentications: Anonymous, Basic, AAD service principal, and managed identities for Azure resources.
  • Paginação no APIs REST.Pagination in the REST APIs.
  • Para REST como fonte, copiar a resposta JSON REST como está ou analisá-la usando o mapeamento de esquema.For REST as source, copying the REST JSON response as-is or parse it by using schema mapping. Somente o conteúdo de resposta na JSON tem suporte.Only response payload in JSON is supported.

Dica

Para testar uma solicitação para recuperação de dados antes de configurar o conector REST no Data Factory, saiba mais sobre a especificação da API para os requisitos de cabeçalho e corpo.To test a request for data retrieval before you configure the REST connector in Data Factory, learn about the API specification for header and body requirements. Você pode usar ferramentas como o Postman ou um navegador da Web para validar.You can use tools like Postman or a web browser to validate.

Pré-requisitosPrerequisites

Se o armazenamento de dados estiver localizado dentro de uma rede local, em uma rede virtual do Azure ou na Amazon Virtual Private Cloud, você precisará configurar um runtime de integração auto-hospedada para se conectar a ele.If your data store is located inside an on-premises network, an Azure virtual network, or Amazon Virtual Private Cloud, you need to configure a self-hosted integration runtime to connect to it.

Por outro lado, se o armazenamento de dados for um serviço de dados de nuvem gerenciado, você poderá usar o Azure Integration Runtime.Alternatively, if your data store is a managed cloud data service, you can use Azure integration runtime. Se o acesso for restrito aos IPs que estão aprovados nas regras de firewall, você poderá adicionar IPs do Azure Integration Runtime à lista de permissões.If the access is restricted to IPs that are approved in the firewall rules, you can add Azure Integration Runtime IPs into the allow list.

Para obter mais informações sobre os mecanismos de segurança de rede e as opções compatíveis com o Data Factory, consulte Estratégias de acesso a dados.For more information about the network security mechanisms and options supported by Data Factory, see Data access strategies.

IntroduçãoGet started

Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:To perform the Copy activity with a pipeline, you can use one of the following tools or SDKs:

As seções a seguir fornecem detalhes sobre propriedades que você pode usar para definir entidades do Data Factory específicas do conector REST.The following sections provide details about properties you can use to define Data Factory entities that are specific to the REST connector.

Propriedades do serviço vinculadoLinked service properties

As seguintes propriedades são suportadas para o serviço vinculado REST:The following properties are supported for the REST linked service:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type deve ser definida como RestService.The type property must be set to RestService. SimYes
urlurl A URL base do serviço REST.The base URL of the REST service. SimYes
enableServerCertificateValidationenableServerCertificateValidation Se o certificado TLS/SSL do lado do servidor deve ser validado ao se conectar ao ponto de extremidade.Whether to validate server-side TLS/SSL certificate when connecting to the endpoint. NãoNo
(o padrão é true)(the default is true)
authenticationTypeauthenticationType Tipo de autenticação usado para se conectar ao serviço REST.Type of authentication used to connect to the REST service. Os valores permitidos são Anonymous, Basic, AadServicePrincipal e ManagedServiceIdentity.Allowed values are Anonymous, Basic, AadServicePrincipal, and ManagedServiceIdentity. Consulte respectivamente as seções correspondentes abaixo em mais propriedades e exemplos.Refer to corresponding sections below on more properties and examples respectively. SimYes
connectViaconnectVia O runtime de integração a ser usado para se conectar ao armazenamento de dados.The Integration Runtime to use to connect to the data store. Saiba mais na seção Pré-requisitos.Learn more from Prerequisites section. Se não especificado, essa propriedade usará o Azure Integration Runtime padrão.If not specified, this property uses the default Azure Integration Runtime. NãoNo

Usar autenticação básicaUse basic authentication

Defina a authenticationType na propriedade Básico.Set the authenticationType property to Basic. Além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:In addition to the generic properties that are described in the preceding section, specify the following properties:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
userNameuserName O nome de usuário a ser usado para acessar o ponto de extremidade REST.The user name to use to access the REST endpoint. SimYes
passwordpassword A senha do usuário (o nome de usuário valor).The password for the user (the userName value). Marque esse campo como um tipo SecureString para armazená-lo com segurança no Data Factory.Mark this field as a SecureString type to store it securely in Data Factory. Você também pode referenciar um segredo armazenado no Cofre de Chaves do Azure.You can also reference a secret stored in Azure Key Vault. SimYes

ExemploExample

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "authenticationType": "Basic",
            "url" : "<REST endpoint>",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Usar a autenticação de entidade de serviço da Microsoft Azure Active DirectoryUse AAD service principal authentication

Defina a authenticationType na propriedade AadServicePrincipal.Set the authenticationType property to AadServicePrincipal. Além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:In addition to the generic properties that are described in the preceding section, specify the following properties:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
servicePrincipalIdservicePrincipalId Especifique a ID do cliente do aplicativo do Azure Active Directory.Specify the Azure Active Directory application's client ID. SimYes
servicePrincipalKeyservicePrincipalKey Especifique a chave do aplicativo do Azure Active Directory.Specify the Azure Active Directory application's key. Marque esse campo como SecureString para armazená-lo com segurança no Data Factory ou referencie um segredo armazenado no Cofre de Chaves do Azure.Mark this field as a SecureString to store it securely in Data Factory, or reference a secret stored in Azure Key Vault. SimYes
locatáriotenant Especifique as informações de locatário (domínio nome ou ID do Locatário) em que o aplicativo reside.Specify the tenant information (domain name or tenant ID) under which your application resides. Para recuperá-lo, passe o mouse no canto superior direito do portal do Azure.Retrieve it by hovering the mouse in the top-right corner of the Azure portal. SimYes
aadResourceIdaadResourceId Especifique o recurso do AAD que você está solicitando para autorização, por exemplo, https://management.core.windows.net .Specify the AAD resource you are requesting for authorization, for example, https://management.core.windows.net. SimYes
azureCloudTypeazureCloudType Para autenticação de entidade de serviço, especifique o tipo de ambiente de nuvem do Azure no qual seu aplicativo do AAD está registrado.For service principal authentication, specify the type of Azure cloud environment to which your AAD application is registered.
Os valores permitidos são AzurePublic, AzureChina, AzureUsGovernment e AzureGermany.Allowed values are AzurePublic, AzureChina, AzureUsGovernment, and AzureGermany. Por padrão, o ambiente de nuvem do data factory é usado.By default, the data factory's cloud environment is used.
NãoNo

ExemploExample

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "authenticationType": "AadServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "aadResourceId": "<AAD resource URL e.g. https://management.core.windows.net>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Usar identidades gerenciadas para autenticação de recursos do AzureUse managed identities for Azure resources authentication

Defina a authenticationType na propriedade ManagedServiceIdentity.Set the authenticationType property to ManagedServiceIdentity. Além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:In addition to the generic properties that are described in the preceding section, specify the following properties:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
aadResourceIdaadResourceId Especifique o recurso do AAD que você está solicitando para autorização, por exemplo, https://management.core.windows.net .Specify the AAD resource you are requesting for authorization, for example, https://management.core.windows.net. SimYes

ExemploExample

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "authenticationType": "ManagedServiceIdentity",
            "aadResourceId": "<AAD resource URL e.g. https://management.core.windows.net>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dadosDataset properties

Esta seção fornece uma lista de propriedades que o conjunto de dados REST suporta.This section provides a list of properties that the REST dataset supports.

Para obter uma lista completa de seções e propriedades disponíveis para definição de conjuntos de dados, consulte Conjuntos de dados e serviços vinculados.For a full list of sections and properties that are available for defining datasets, see Datasets and linked services.

Para copiar dados do REST, há suporte para as seguintes propriedades:To copy data from REST, the following properties are supported:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade tipo do conjunto de dados deve ser definida como RestResource.The type property of the dataset must be set to RestResource. SimYes
relativeUrlrelativeUrl Uma URL relativa para o recurso que contém os dados.A relative URL to the resource that contains the data. Quando essa propriedade não é especificada, somente o URL especificado na definição de serviço vinculada é usado.When this property isn't specified, only the URL that's specified in the linked service definition is used. O conector HTTP copia dados da URL combinada: [URL specified in linked service]/[relative URL specified in dataset] .The HTTP connector copies data from the combined URL: [URL specified in linked service]/[relative URL specified in dataset]. NãoNo

Se você definiu requestMethod , additionalHeaders requestBody e paginationRules no DataSet, ainda terá suporte como está, enquanto você é sugerido para usar o novo modelo na atividade no futuro.If you were setting requestMethod, additionalHeaders, requestBody and paginationRules in dataset, it is still supported as-is, while you are suggested to use the new model in activity going forward.

Exemplo:Example:

{
    "name": "RESTDataset",
    "properties": {
        "type": "RestResource",
        "typeProperties": {
            "relativeUrl": "<relative url>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<REST linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Propriedades da Atividade de CópiaCopy Activity properties

Esta seção fornece uma lista das propriedades com suporte pela fonte REST e pelo coletor.This section provides a list of properties supported by the REST source and sink.

Para obter uma lista completa de seções e propriedades que estão disponíveis para definir atividades, consulte Pipelines.For a full list of sections and properties that are available for defining activities, see Pipelines.

REST como fonteREST as source

As propriedades a seguir têm suporte na seção source da atividade de cópia:The following properties are supported in the copy activity source section:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype O tipo de propriedade da fonte da atividade de cópia deve ser definida como: RestSource.The type property of the copy activity source must be set to RestSource. SimYes
requestMethodrequestMethod O método HTTP.The HTTP method. Os valores permitidos são Get (padrão) e post.Allowed values are GET (default) and POST. NãoNo
additionalHeadersadditionalHeaders Cabeçalhos de solicitação HTTP adicionais.Additional HTTP request headers. NãoNo
requestBodyrequestBody O corpo da solicitação HTTP.The body for the HTTP request. NãoNo
paginationRulespaginationRules As regras de paginação para compor as próximas solicitações de página.The pagination rules to compose next page requests. Consulte a seção suporte à paginação em detalhes.Refer to pagination support section on details. NãoNo
httpRequestTimeouthttpRequestTimeout O tempo limite (o valor TimeSpan) para a solicitação HTTP para obter uma resposta.The timeout (the TimeSpan value) for the HTTP request to get a response. Esse valor é o tempo limite para obter uma resposta, não o tempo limite para ler os dados da resposta.This value is the timeout to get a response, not the timeout to read response data. O valor padrão é 01:00:40.The default value is 00:01:40. NãoNo
requestIntervalrequestInterval O tempo de espera antes de enviar a solicitação para a próxima página.The time to wait before sending the request for next page. O valor padrão é 00:00:01The default value is 00:00:01 NãoNo

Observação

O conector REST ignora qualquer cabeçalho "Accept" especificado em additionalHeaders .REST connector ignores any "Accept" header specified in additionalHeaders. Como o conector REST só dá suporte à resposta em JSON, ele gerará automaticamente um cabeçalho de Accept: application/json .As REST connector only support response in JSON, it will auto generate a header of Accept: application/json.

Exemplo 1: usando o método Get com paginaçãoExample 1: Using the Get method with pagination

"activities":[
    {
        "name": "CopyFromREST",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<REST input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "RestSource",
                "additionalHeaders": {
                    "x-user-defined": "helloworld"
                },
                "paginationRules": {
                    "AbsoluteUrl": "$.paging.next"
                },
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemplo 2: Usando o método PostExample 2: Using the Post method

"activities":[
    {
        "name": "CopyFromREST",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<REST input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "RestSource",
                "requestMethod": "Post",
                "requestBody": "<body for POST REST request>",
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

REST como coletorREST as sink

As propriedades a seguir têm suporte na seção sink da atividade de cópia:The following properties are supported in the copy activity sink section:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type do coletor da atividade de cópia deve ser definida como RestSink.The type property of the copy activity sink must be set to RestSink. SimYes
requestMethodrequestMethod O método HTTP.The HTTP method. Os valores permitidos são post (padrão), Put e patch.Allowed values are POST (default), PUT, and PATCH. NãoNo
additionalHeadersadditionalHeaders Cabeçalhos de solicitação HTTP adicionais.Additional HTTP request headers. NãoNo
httpRequestTimeouthttpRequestTimeout O tempo limite (o valor TimeSpan) para a solicitação HTTP para obter uma resposta.The timeout (the TimeSpan value) for the HTTP request to get a response. Esse valor é o tempo limite para obter uma resposta, não o tempo limite para gravar os dados.This value is the timeout to get a response, not the timeout to write the data. O valor padrão é 01:00:40.The default value is 00:01:40. NãoNo
requestIntervalrequestInterval O tempo de intervalo entre solicitações diferentes em milissegundos.The interval time between different requests in millisecond. O valor do intervalo de solicitação deve ser um número entre [10, 60000].Request interval value should be a number between [10, 60000]. NãoNo
httpCompressionTypehttpCompressionType Tipo de compactação HTTP a ser usado ao enviar dados com o nível de compactação ideal.HTTP compression type to use while sending data with Optimal Compression Level. Os valores permitidos são None e gzip.Allowed values are none and gzip. NãoNo
writeBatchSizewriteBatchSize Número de registros a serem gravados no coletor REST por lote.Number of records to write to the REST sink per batch. O valor padrão é 10000.The default value is 10000. NãoNo

O conector REST como coletor funciona com as APIs REST que aceitam JSON.REST connector as sink works with the REST APIs that accept JSON. Os dados serão enviados em JSON com o padrão a seguir.The data will be sent in JSON with the following pattern. Conforme necessário, você pode usar o mapeamento de esquema de atividade de cópia para remodelar os dados de origem para estar de acordo com a carga esperada pela API REST.As needed, you can use the copy activity schema mapping to reshape the source data to conform to the expected payload by the REST API.

[
    { <data object> },
    { <data object> },
    ...
]

Exemplo:Example:

"activities":[
    {
        "name": "CopyToREST",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<REST output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "RestSink",
                "requestMethod": "POST",
                "httpRequestTimeout": "00:01:40",
                "requestInterval": 10,
                "writeBatchSize": 10000,
                "httpCompressionType": "none",
            },
        }
    }
]

Suporte à paginaçãoPagination support

Ao copiar dados de APIs REST, normalmente, a API REST limita seu tamanho de carga de resposta de uma única solicitação em um número razoável; Embora seja possível retornar uma grande quantidade de dados, ele divide o resultado em várias páginas e exige que os chamadores enviem solicitações consecutivas para obter a próxima página do resultado.When copying data from REST APIs, normally, the REST API limits its response payload size of a single request under a reasonable number; while to return large amount of data, it splits the result into multiple pages and requires callers to send consecutive requests to get next page of the result. Geralmente, a solicitação para uma página é dinâmica e composta por informações retornadas da resposta de página anterior.Usually, the request for one page is dynamic and composed by the information returned from the response of previous page.

Esse conector genérico REST suporta os seguintes padrões de paginação:This generic REST connector supports the following pagination patterns:

  • Valor da propriedade da URL absoluta ou relativa da próxima solicitação no corpo da resposta atualNext request’s absolute or relative URL = property value in current response body
  • URL absoluta ou relativa da próxima solicitação = valor do cabeçalho nos cabeçalhos de resposta atuaisNext request’s absolute or relative URL = header value in current response headers
  • Próxima solicitação de consulta de parâmetro = valor de propriedade no corpo de resposta atualNext request’s query parameter = property value in current response body
  • Próxima solicitação de consulta de parâmetro = valor de cabeçalho nos cabeçalhos de resposta atuaisNext request’s query parameter = header value in current response headers
  • Próxima solicitação de cabeçalho = valor de propriedade no corpo de resposta atualNext request’s header = property value in current response body
  • Próxima solicitação de cabeçalho = valor de cabeçalho nos cabeçalhos de resposta atuaisNext request’s header = header value in current response headers

As regras de paginação são definidas como um dicionário no conjunto de dados, que contém um ou mais pares chave-valor que diferenciam maiúsculas de minúsculas.Pagination rules are defined as a dictionary in dataset, which contains one or more case-sensitive key-value pairs. A configuração será usada para gerar a solicitação a partir da segunda página.The configuration will be used to generate the request starting from the second page. O conector deixará de iteração quando obter o código de status HTTP 204 (sem conteúdo) ou qualquer uma das expressões JSONPath em "paginationRules" retornar NULL.The connector will stop iterating when it gets HTTP status code 204 (No Content), or any of the JSONPath expressions in "paginationRules" returns null.

O Suporte para chaves nas regras de paginação:Supported keys in pagination rules:

ChaveKey DescriçãoDescription
AbsoluteUrlAbsoluteUrl Indica a URL para emitir a próxima solicitação.Indicates the URL to issue the next request. Ele pode ser uma URL absoluta ou relativa.It can be either absolute URL or relative URL.
QueryParameters.request_query_parameter OU QueryParameters['request_query_parameter']QueryParameters.request_query_parameter OR QueryParameters['request_query_parameter'] "request_query_parameter" é definido pelo usuário, que faz referência a um nome de parâmetro de consulta na próxima URL de solicitação HTTP."request_query_parameter" is user-defined, which references one query parameter name in the next HTTP request URL.
Headers.request_header OU Headers['request_header']Headers.request_header OR Headers['request_header'] "request_header" é definido pelo usuário, que faz referência a um nome de cabeçalho na próxima solicitação HTTP."request_header" is user-defined, which references one header name in the next HTTP request.

Os Valores com suporte nas regras de paginação:Supported values in pagination rules:

ValorValue DescriçãoDescription
Headers.response_header OU Headers['response_header']Headers.response_header OR Headers['response_header'] "response_header" é definido pelo usuário, que faz referência a um nome de cabeçalho na resposta HTTP atual, o valor que será usado para emitir a próxima solicitação."response_header" is user-defined, which references one header name in the current HTTP response, the value of which will be used to issue next request.
Uma expressão JSONPath começando com "$" (que representa a raiz do corpo da resposta)A JSONPath expression starting with "$" (representing the root of the response body) O corpo da resposta deve conter apenas um objeto JSON.The response body should contain only one JSON object. A expressão JSONPath deve retornar um único valor primitivo, que será usado para emitir a próxima solicitação.The JSONPath expression should return a single primitive value, which will be used to issue next request.

Exemplo:Example:

O Facebook API do Graph retorna a resposta na estrutura a seguir, caso em que a URL da próxima página é representada em *paginação. avançar _:Facebook Graph API returns response in the following structure, in which case next page's URL is represented in *paging.next _:

{
    "data": [
        {
            "created_time": "2017-12-12T14:12:20+0000",
            "name": "album1",
            "id": "1809938745705498_1809939942372045"
        },
        {
            "created_time": "2017-12-12T14:14:03+0000",
            "name": "album2",
            "id": "1809938745705498_1809941802371859"
        },
        {
            "created_time": "2017-12-12T14:14:11+0000",
            "name": "album3",
            "id": "1809938745705498_1809941879038518"
        }
    ],
    "paging": {
        "cursors": {
            "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
            "before": "NDMyNzQyODI3OTQw"
        },
        "previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw",
        "next": "https://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
    }
}

A configuração de origem da atividade de cópia REST correspondente paginationRules , especialmente, é a seguinte:The corresponding REST copy activity source configuration especially the paginationRules is as follows:

"typeProperties": {
    "source": {
        "type": "RestSource",
        "paginationRules": {
            "AbsoluteUrl": "$.paging.next"
        },
        ...
    },
    "sink": {
        "type": "<sink type>"
    }
}

Usar o OAuthUse OAuth

Esta seção descreve como usar um modelo de solução para copiar dados do conector REST para Azure Data Lake Storage no formato JSON usando o OAuth.This section describes how to use a solution template to copy data from REST connector into Azure Data Lake Storage in JSON format using OAuth.

Sobre o modelo de soluçãoAbout the solution template

O modelo contém duas atividades:The template contains two activities:

  • _ A atividade Web* recupera o token de portador e, em seguida, passa-o para a atividade de cópia subsequente como autorização._ Web* activity retrieves the bearer token and then pass it to subsequent Copy activity as authorization.
  • A atividade de cópia copia dados do REST para o Azure data Lake Storage.Copy activity copies data from REST to Azure Data Lake Storage.

O modelo define dois parâmetros:The template defines two parameters:

  • SinkContainer é o caminho da pasta raiz para onde os dados são copiados em seu Azure data Lake Storage.SinkContainer is the root folder path where the data is copied to in your Azure Data Lake Storage.
  • SinkDirectory é o caminho do diretório sob a raiz onde os dados são copiados em seu Azure data Lake Storage.SinkDirectory is the directory path under the root where the data is copied to in your Azure Data Lake Storage.

Como usar este modelo de soluçãoHow to use this solution template

  1. Vá para a cópia do REST ou http usando o modelo OAuth.Go to the Copy from REST or HTTP using OAuth template. Crie uma nova conexão para a conexão de origem.Create a new connection for Source Connection. Criar novas conexõesCreate new connections

    Abaixo estão as principais etapas para as novas configurações de serviço vinculado (REST):Below are key steps for new linked service (REST) settings:

    1. Em URL base, especifique o parâmetro de URL para seu próprio serviço REST de origem.Under Base URL, specify the url parameter for your own source REST service.
    2. Para tipo de autenticação, escolha anônimo.For Authentication type, choose Anonymous. Nova conexão RESTNew REST connection
  2. Crie uma nova conexão para a conexão de destino.Create a new connection for Destination Connection.
    Nova conexão Gen2

  3. Selecione Usar este modelo.Select Use this template. Usar este modeloUse this template

  4. Você verá o pipeline criado conforme mostrado no exemplo a seguir:  captura de tela mostra o pipeline criado a partir do modelo.You would see the pipeline created as shown in the following example: Screenshot shows the pipeline created from the template.

  5. Selecione atividade da Web .Select Web activity. Em configurações, especifique a URL, o método, os cabeçalhos e o corpo correspondentes para recuperar o token de portador OAuth da API de logon do serviço do qual você deseja copiar dados.In Settings, specify the corresponding URL, Method, Headers, and Body to retrieve OAuth bearer token from the login API of the service that you want to copy data from. O espaço reservado no modelo demonstra um exemplo de OAuth Azure Active Directory (AAD).The placeholder in the template showcases a sample of Azure Active Directory (AAD) OAuth. Observe que a autenticação do AAD tem suporte nativo do conector REST, aqui está apenas um exemplo para o fluxo OAuth.Note AAD authentication is natively supported by REST connector, here is just an example for OAuth flow.

    PropriedadeProperty DescriçãoDescription
    URLURL Especifique a URL da qual recuperar o token de portador OAuth.Specify the url to retrieve OAuth bearer token from. por exemplo, no exemplo, ele é https://login.microsoftonline.com/microsoft.onmicrosoft.com/oauth2/tokenfor example, in the sample here it's https://login.microsoftonline.com/microsoft.onmicrosoft.com/oauth2/token ..
    MétodoMethod O método HTTP.The HTTP method. Os valores permitidos são post e Get.Allowed values are Post and Get.
    CabeçalhosHeaders O cabeçalho é definido pelo usuário, que faz referência a um nome de cabeçalho na solicitação HTTP.Header is user-defined, which references one header name in the HTTP request.
    CorpoBody O corpo da solicitação HTTP.The body for the HTTP request.

    Pipeline

  6. Em copiar dados atividade, selecione a guia origem , você pode ver que o token de portador (access_token) recuperado da etapa anterior seria passado para a atividade copiar dados como autorização em cabeçalhos adicionais.In Copy data activity, select Source tab, you could see that the bearer token (access_token) retrieved from previous step would be passed to Copy data activity as Authorization under Additional headers. Confirme as configurações das propriedades a seguir antes de iniciar uma execução de pipeline.Confirm settings for following properties before starting a pipeline run.

    PropriedadeProperty DescriçãoDescription
    Método de solicitaçãoRequest method O método HTTP.The HTTP method. Valores permitidos são Obtenha (padrão) e Post.Allowed values are Get (default) and Post.
    Cabeçalhos adicionaisAdditional headers Cabeçalhos de solicitação HTTP adicionais.Additional HTTP request headers.

    Autenticação de origem de cópia

  7. Selecione Depurar, insira os Parâmetros e, em seguida, selecione Concluir.Select Debug, enter the Parameters, and then select Finish. Execução de pipelinePipeline run

  8. Quando a execução do pipeline for concluída com êxito, você verá o resultado semelhante ao exemplo a seguir:  resultado da execução do pipelineWhen the pipeline run completes successfully, you would see the result similar to the following example: Pipeline run result

  9. Clique no ícone de "saída" do webactivity na coluna ações , você verá o access_token retornado pelo serviço.Click the "Output" icon of WebActivity in Actions column, you would see the access_token returned by the service.

    Saída de token

  10. Clique no ícone de "entrada" do CopyActivity na coluna ações , você verá que o access_token recuperado pelo webactivity é passado para CopyActivity para autenticação.Click the "Input" icon of CopyActivity in Actions column, you would see the access_token retrieved by WebActivity is passed to CopyActivity for authentication.

    Entrada de token

    Cuidado

    Para evitar que o token seja registrado em texto sem formatação, habilite "saída segura" na atividade da Web e "entrada segura" na atividade de cópia.To avoid token being logged in plain text, enable "Secure output" in Web activity and "Secure input" in Copy activity.

Exportar a resposta JSON como ela apareceExport JSON response as-is

Você pode usar esse conector REST para exportar a resposta JSON de API REST como ela aparece para vários armazenamentos baseados em arquivo.You can use this REST connector to export REST API JSON response as-is to various file-based stores. Para efetuar essa cópia independente de esquema, ignore a seção da "estrutura" (também chamada de esquema) no conjunto de dados e mapeamento de esquema na atividade de cópia.To achieve such schema-agnostic copy, skip the "structure" (also called schema) section in dataset and schema mapping in copy activity.

Mapeamento de esquemaSchema mapping

Para copiar dados do ponto de extremidade REST para o coletor de tabela, confira o mapeamento do esquema.To copy data from REST endpoint to tabular sink, refer to schema mapping.

Próximas etapasNext steps

Para obter uma lista de armazenamentos de dados que o Copy Activity suporta como fontes e coletores no Azure Data Factory, consulte Armazenamentos e formatos de dados compatíveis.For a list of data stores that Copy Activity supports as sources and sinks in Azure Data Factory, see Supported data stores and formats.