Compartilhar via


Consultar dados usando portais API Web

Você pode usar as operações disponíveis de API Web no Power Pages. As operações da API Web consistem em solicitações e respostas HTTP. Este artigo fornece exemplos de operações de leitura, métodos, URI e o JSON de amostra que podem ser usados na solicitação HTTP.

Pré-requisitos

  • Sua versão do site deve ser 9.4.1.x ou superior.

  • Habilite a tabela e o campo para operações da API Web. Mais informações: Configurações do site para a API Web

  • A API Web de portais acessa registros da tabela e segue as permissões da tabela fornecidas a usuários por meio das funções Web associadas. Certifique-se de configurar as permissões de tabela corretas. Mais informações: Criar funções Web

Observação

Ao fazer referência a tabelas do Dataverse usando a API Web dos portais, você precisa usar EntitySetName, por exemplo, para acessar a tabela de conta, a sintaxe do código usará EntitySetName de contas.

Consultar registros

O seguinte exemplo consulta registros da conta:

Operação Método URI
Recuperar registros de tabela GET [Portal URI]/_api/accounts

Exemplo:
https://contoso.powerappsportals.com/_api/accounts

Resposta de amostra

{
"value": [
    {
    "@odata.etag": "W/\"1066412\"",
    "name": "Fourth Coffee (sample)",
    "accountid": "d2e11ba8-92f6-eb11-94ef-000d3a5aa607"
    },
    {
    "@odata.etag": "W/\"1066413\"",
    "name": "Litware, Inc. (sample)",
    "accountid": "d4e11ba8-92f6-eb11-94ef-000d3a5aa607"
    }
]
}

Use as opções de consulta do sistema $ select e $top para retornar a propriedade do nome para as três primeiras contas:

Operação Método URI
Recupere os três primeiros registros de entidade GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3

Recupere a conta usando a ID da conta:

Operação Método URI
Recuperar propriedade específica para um registro GET [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

Exemplo:
https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

Resposta de amostra

{
    "@odata.etag": "W/\"1066414\"",
    "name": "Adventure Works (sample)",
    "accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}

Aplicar opções de consulta do sistema

Cada uma das opções de consulta do sistema anexada à URL para o conjunto de entidades é adicionada usando a sintaxe para cadeias de caracteres de consulta. A primeira é anexada após [?] e as seguintes opções de consulta são separadas usando [&]. Todas as opções de consulta diferenciam maiúsculas de minúsculas, conforme mostrado no seguinte exemplo:

Método URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

Propriedades da solicitação específica

Use a opção de consulta do sistema $select para limitar as propriedades retornadas, conforme mostrado no seguinte exemplo:

Método URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3

Importante

Esta é uma práticas recomendada de desempenho. Se as propriedades não forem especificadas e você tiver definido a configuração do site Webapi/<table name>/fields como *, todas as propriedades serão retornadas usando $select. Se nenhuma propriedade for especificada, um erro será retornado.

Filtrar resultados

Use a opção de consulta do sistema $filter para definir critérios para os quais as linhas serão retornadas.

Operadores de filtro padrão

A API Web é compatível com os operadores de filtro OData padrão listados na seguinte tabela:

Operador Descrição Exemplo
Operadores de comparação
eq Igual a $filter=revenue eq 100000
ne Not Equal $filter=revenue ne 100000
gt Maior que $filter=revenue gt 100000
ge Maior ou igual a $filter=revenue ge 100000
lt Menor que $filter=revenue lt 100000
le Menor ou igual a $filter=revenue le 100000
Operadores lógicos:
and and lógico $filter=revenue lt 100000 and revenue gt 2000
or or lógico $filter=contains(name,'(sample)') or contains(name,'test')
not Negação lógica $filter=not contains(name,'sample')
Operadores de agrupamento
( ) Agrupamento de precedência (contains(name,'sample') or contains(name,'test')) and revenue gt 5000

Funções de consulta padrão

A API Web é compatível com estas funções de consulta de cadeia de caracteres do OData padrão:

Função Exemplo
contém $filter=contains(name,'(sample)')
endswith $filter=endswith(name,'Inc.')
startswith $filter=startswith(name,'a')

Funções de consulta do Dataverse

A API da Web oferece suporte às funções de consulta do Dataverse para filtrar resultados. Para obter mais informações, consulte Referência da API Web de função de consulta.

Ordenar resultados

Especifique a ordem em que os itens são devolvidos usando a opção de consulta do sistema $orderby. Use o sufixo asc ou desc para especificar a ordem crescente ou decrescente, respectivamente. O padrão será ascendente se o sufixo não for aplicado. O exemplo a seguir mostra a recuperação do nome e das propriedades de receita de contas ordenadas por receita crescente e por nome decrescente.

Método URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

Agregar e agrupar resultados

Usando $apply, você pode agregar e agrupar seus dados dinamicamente, conforme visto nestes exemplos:

Cenários Exemplo
Lista de status únicos na consulta accounts?$apply=groupby((statuscode))
Soma agregada do valor estimado opportunities?$apply=aggregate(estimatedvalue com soma como total)
Tamanho médio do negócio com base no valor estimado e status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue com média como averagevalue)
Soma do valor estimado com base no status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue com soma como total))
Receita total da oportunidade por nome da conta opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue com soma como total))
Nomes de contato principal para contas em 'WA' accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname))
Data e hora de criação do último registro accounts?$apply=aggregate(createdon com máximo como lastCreate)
Data e hora da primeira criação do registro accounts?$apply=aggregate(createdon com mín. como firstCreate)

Recupere uma contagem de linhas

Use a opção de consulta do sistema $count com um valor true para incluir uma contagem de entidades que correspondem aos critérios de filtro até 5.000.

Método URI
GET [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

Resposta de amostra

{
"@odata.count": 10,
"value": [
    {
    "@odata.etag": "W/\"1066412\"",
    "name": "Fourth Coffee (sample)",
    "accountid": "d2e11ba8-92f6-eb11-94ef-000d3a5aa607"
    },
    {
    "@odata.etag": "W/\"1066413\"",
    "name": "Litware, Inc. (sample)",
    "accountid": "d4e11ba8-92f6-eb11-94ef-000d3a5aa607"
    },
    {
    "@odata.etag": "W/\"1066414\"",
    "name": "Adventure Works (sample)",
    "accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
    }
]
}

Se você não quiser retornar dados, exceto para a contagem, poderá aplicar $count a qualquer coleção para obter apenas o valor.

Método URI
GET [Portal URI/_api/accounts/$count

Exemplo:
https://contoso.powerappsportals.com/_api/accounts/$count

Resposta de amostra

3

Comparação de coluna

O seguinte exemplo mostra como comparar colunas usando a API Web:

Método URI
GET [Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname

Exemplo:
https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname

Use a opção de consulta do sistema $expand nas propriedades de navegação para controlar quais dados de entidades relacionadas são retornados.

Propriedade de navegação associada à pesquisa

Você precisará usar a propriedade Microsoft.Dynamics.CRM.associatednavigationproperty como o atributo de pesquisa ao usar a opção de consulta $expand.

Para determinar a Microsoft.Dynamics.CRM.associatednavigationproperty de um atributo, você pode fazer a seguinte solicitação http GET para a coluna usando a seguinte convenção de nomenclatura: _name_value.

No exemplo a seguir, podemos determinar a propriedade de navegação associada da coluna Contato Principal da tabela Conta especificando o nome da coluna primarycontactid ao formatar o nome na solicitação: _primarycontactid_value.

Método URI
GET [Portal URI]/_api/accounts?$select=_primarycontactid_value

Exemplo
https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value

Resposta de amostra

{
"value": [
    {
        "@odata.etag": "W/\"2465216\"",
        "_primarycontactid_value@OData.Community.Display.V1.FormattedValue": "Yvonne McKay (sample)",
        "_primarycontactid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "primarycontactid",
        "_primarycontactid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "contact",
        "_primarycontactid_value": "417319b5-cd18-ed11-b83c-000d3af4d812",
        "accountid": "2d7319b5-cd18-ed11-b83c-000d3af4d812"
    }
]
}

Vemos na resposta que a propriedade de navegação associada é primarycontactid. A propriedade de navegação associada pode ser o nome lógico ou o nome do esquema da coluna de pesquisa dependendo de como a tabela foi criada.

Para mais informações, consulte Recuperar dados sobre propriedades de pesquisa.

O exemplo a seguir mostra como recuperar o contato para todos os registros da conta. Para os registros de contato relacionados, estamos apenas recuperando contactid e fullname.

Método URI
GET [Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)

Resposta de amostra

{
"value": [
    {
    "@odata.etag": "W/\"1066412\"",
    "name": "Fourth Coffee (sample)",
    "accountid": "d2e11ba8-92f6-eb11-94ef-000d3a5aa607",
        "primarycontactid": {
        "contactid": "e6e11ba8-92f6-eb11-94ef-000d3a5aa607",
        "fullname": "Yvonne McKay (sample)"
        }
    },
    {
    "@odata.etag": "W/\"1066413\"",
    "name": "Litware, Inc. (sample)",
    "accountid": "d4e11ba8-92f6-eb11-94ef-000d3a5aa607",
        "primarycontactid": {
        "contactid": "e8e11ba8-92f6-eb11-94ef-000d3a5aa607",
        "fullname": "Susanna Stubberod (sample)"
        }
    }
]
}

Se você expandir os parâmetros de navegação com valor de coleção para recuperar tabelas relacionadas para conjuntos de entidades, apenas um nível de profundidade será retornado se houver dados. Caso contrário, a coleção retornará uma matriz vazia.

Método URI
GET [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

O exemplo a seguir demonstra como você pode expandir entidades relacionadas para conjuntos de entidades usando propriedades de navegação com valor único e com valor de coleção. Você precisará especificar o nome do relacionamento da tabela na sintaxe do código.

Método URI
GET [Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)

Exemplo:
https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)

Próxima Etapa

Operações de gravação, atualização e exclusão de portais usando a API Web

Confira também