次の方法で共有


REST でのフィールド選択 (プロジェクション)

プロジェクションは、クライアントが実際に必要とするものだけを返すのに役立ちます。 ペイロードを小さくすると、パフォーマンスが向上し、ネットワーク コストが削減され、クライアント側の解析オーバーヘッドが削減されます。 データ API ビルダー (DAB) は、 $select クエリ パラメーターを使用して REST のプロジェクションを実装します。

REST クエリ パラメーター名 ( $selectを含む) では、大文字と小文字が区別されます。 また、フィールド名は、構成または公開された内容に基づいて大文字と小文字が区別されます。

このドキュメントの GraphQL バージョンに移動します

基本的な選択

パターン

GET /api/{entity}?$select=FieldA,FieldB,FieldC

$selectを省略すると、DAB は呼び出し元のロールが読み取りを許可されているすべてのフィールドを返します (includeexclude構成とフィールド レベルのアクセス許可の対象)。 *のようなワイルドカード トークンはありません。$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 キーワードについて説明します。

追加の内部列と 6 番目のプローブ行はペイロードに表示されません。

ストアド プロシージャ

ストアド プロシージャに基づくエンティティの場合、 $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 品目 返すフィールドを選択する
フィルタリング $filter フィルター 条件で行を制限する
並べ替え $orderby orderBy 並べ替え順序を定義する
ページ サイズ $first first ページあたりのアイテム数を制限する
継続 $after カーソルを使用して最後のページから続行する

REST キーワードは、OData 規則に従って、 $で始まります。