Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Проекция помогает возвращать только то, что ваш клиент действительно нуждается. Небольшие полезные данные повышают производительность, сокращают затраты на сеть и сокращают затраты на анализ на стороне клиента. Построитель ДАННЫХ (DAB) реализует проекцию REST с помощью $select параметра запроса.
Замечание
Имена параметров запроса REST (включая $select) чувствительны к регистру. Имена полей также чувствительны к регистру в зависимости от того, что вы настроили или предоставили.
Перейдите к версии GraphQL этого документа.
Базовый выбор
Рисунок
GET /api/{entity}?$select=FieldA,FieldB,FieldC
Если $select опущено, DAB возвращает все поля, которые вызывающая роль авторизована для чтения (субъект include и настройка и exclude разрешения на уровне полей). Нет подстановочного знака, например *, опущений о том, как запрашивать $select полную разрешенную фигуру.
Примеры
# 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
Внутренние столбцы и столбцы ответа
Вам не требуется проектировать первичный ключ или поля упорядочивания. Если опущено, они не отображаются в ответе JSON. Однако DAB может получить дополнительные столбцы, необходимые для применения политик безопасности (фильтров на уровне строк, маски полей) и обработки курсоров разбиения на страницы ($after / nextLink).
Замечание
Эти внутренние извлекаемые столбцы удаляются перед ответом, если вы явно не запрашиваете их.
Example
GET /api/book?$select=id,title&$orderby=publisher_id desc&$first=5
Концептуальный SQL
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;
Ответ
{
"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": "..."
}
Дополнительные сведения о разбиении на страницы и ключевом слове after.
Дополнительные внутренние столбцы и шестая строка пробы не отображаются в полезных данных.
Хранимые процедуры
Для хранимых процедур, поддерживаемых сущностями, $select не интерпретируется как предложение проекции. Вместо этого пары "ключ-значение" строки запроса (кроме распознанных системных параметров, таких как $filter, $orderbyи т. д.), рассматриваются как параметры хранимой процедуры.
$select не имеет эффекта; Результирующий набор процедуры определяет фигуру.
Пример конфигурации
{
"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" ]
}
}
}
}
}
См. также
| Понятие | REST | GraphQL | Цель |
|---|---|---|---|
| Projection | $select | items | Выбор возвращаемых полей |
| Filtering | $filter | фильтр | Ограничение строк по условию |
| Сортировка | $orderby | orderBy | Определение порядка сортировки |
| Размер страницы | $first | first | Ограничение количества элементов на страницу |
| Продолжение | $after | после | Продолжить с последней страницы с помощью курсора |
Замечание
Ключевые слова REST начинаются с $следующих соглашений OData.