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 |
Recupere os registros da tabela relacionada com uma consulta
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.
Recupere os registros da tabela relacionada, expandindo as propriedades de navegação de valor único
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)"
}
}
]
}
Recupere as tabelas relacionadas, expandindo propriedades de navegação com valor de coleção
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) |
Recupere as tabelas relacionadas, expandindo propriedades de navegação com valor único e valor de coleção
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