Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A projeção ajuda você a retornar apenas o que seu cliente realmente precisa. Cargas menores melhoram o desempenho, reduzem os custos de rede e reduzem a sobrecarga de análise do lado do cliente. O DAB (Construtor de API de Dados) implementa a projeção para REST por meio do $select parâmetro de consulta.
Observação
Os nomes dos parâmetros de consulta REST (incluindo $select) diferenciam maiúsculas de minúsculas. Os nomes de campo também diferenciam maiúsculas de minúsculas com base no que você configurou ou expôs.
Acesse a versão do GraphQL deste documento.
Seleção básica
Padrão
GET /api/{entity}?$select=FieldA,FieldB,FieldC
Se $select for omitido, o DAB retornará todos os campos aos quais a função do chamador está autorizada a ler (sujeita e includeexclude configuração e permissões de nível de campo). Não há nenhum token curinga como *; omitir $select é como você solicita a forma permitida completa.
Exemplos
# Return all accessible fields
GET /api/author
# Return only first_name
GET /api/author?$select=first_name
# Return only first_name and last_name
GET /api/author?$select=first_name,last_name
Colunas internas vs de resposta
Você não é necessário para projetar a chave primária ou os campos de ordenação. Se omitidos, eles não aparecerão na resposta JSON. No entanto, o DAB pode buscar internamente colunas extras necessárias para impor políticas de segurança (filtros de nível de linha, máscaras de campo) e manipular cursores de paginação ($after / nextLink).
Observação
Essas colunas buscadas internamente são removidas antes da resposta, a menos que você as solicite explicitamente.
Example
GET /api/book?$select=id,title&$orderby=publisher_id desc&$first=5
SQL conceitual
SELECT TOP (6) -- first (5) + 1 probe row for paging
[b].[id],
[b].[sku_title] AS title
FROM dbo.books AS [b]
ORDER BY [b].[publisher_id] DESC, [b].[id] ASC;
Resposta
{
"value": [
{ "id": 101, "title": "Example 1" },
{ "id": 77, "title": "Example 2" },
{ "id": 42, "title": "Example 3" },
{ "id": 33, "title": "Example 4" },
{ "id": 5, "title": "Example 5" }
],
"nextLink": "..."
}
Saiba mais sobre paginação e a palavra-chave after.
As colunas internas extras e a sexta linha de investigação não estão visíveis no conteúdo.
Procedimentos armazenados
Para entidades com suporte de procedimento armazenado, $select não é interpretada como uma cláusula de projeção. Em vez disso, os pares chave/valor da cadeia de caracteres de consulta (exceto parâmetros reconhecidos do sistema, como $filter, $orderbyetc.) são tratados como parâmetros de procedimento armazenado.
$select não tem efeito; O conjunto de resultados do procedimento define a forma.
Configuração de exemplo
{
"runtime": {
"pagination": {
"default-page-size": 100,
"max-page-size": 100000
}
},
"entities": {
"Book": {
"source": {
"type": "table",
"object": "dbo.books"
},
"mappings": {
"sku_title": "title",
"sku_price": "price"
},
"relationships": {
"book_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
}
},
"Category": {
"source": {
"type": "table",
"object": "dbo.categories"
},
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
Consulte também
| Conceito | REST | GraphQL | Propósito |
|---|---|---|---|
| Projection | $select | items | Escolher quais campos retornar |
| Filtragem | $filter | filtro | Restringir linhas por condição |
| Classificação | $orderby | orderBy | Definir a ordem de classificação |
| Tamanho da página | $first | first | Limitar o número de itens por página |
| Continuação | $after | depois | Continuar da última página usando um cursor |
Observação
As palavras-chave REST começam com $, seguindo as convenções OData.