Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Проекция помогает возвращать только то, что ваш клиент действительно нуждается. Небольшие полезные данные повышают производительность, сокращают затраты на сеть и сокращают затраты на анализ на стороне клиента. Построитель ДАННЫХ (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.