Aracılığıyla paylaş


REST'te alan seçimi (Projeksiyon)

Projeksiyon, yalnızca istemcinizin gerçekten ihtiyaç duyduğu şeyleri geri döndürmenize yardımcı olur. Daha küçük yükler performansı artırır, ağ maliyetlerini azaltır ve istemci tarafı ayrıştırma ek yükünü azaltır. Veri API oluşturucusu (DAB), sorgu parametresi aracılığıyla $select REST için projeksiyon uygular.

Uyarı

REST sorgu parametresi adları (dahil $select) büyük/küçük harfe duyarlıdır. Alan adları ayrıca yapılandırdığınız veya kullanıma sunulan öğelere göre büyük/küçük harfe duyarlıdır.

Bu belgenin GraphQL sürümüne gidin.

Temel seçim

Desen

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

$select Atlanırsa, DAB çağıranın rolünün okuma yetkisine sahip olduğu tüm alanları döndürür (ve yapılandırma ve exclude alan düzeyinde izinlere tabidirinclude). gibi *joker karakter belirteci yoktur; tam izin verilen şeklin nasıl istendiğiniz atlanır $select .

Örnekler

# 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

İç ve yanıt sütunları

Birincil anahtarı veya sıralama alanlarını yansıtmanız gerekmez. Atlanırsa, JSON yanıtında görünmezler. Ancak DAB, güvenlik ilkelerini (satır düzeyi filtreler, alan maskeleri) zorunlu kılmak ve sayfalandırma imleçlerini ($after / nextLink) işlemek için gereken ek sütunları dahili olarak getirebilir.

Uyarı

Dahili olarak getirilen bu sütunlar, açıkça istemediğiniz sürece yanıt öncesinde kaldırılır.

Example

GET /api/book?$select=id,title&$orderby=publisher_id desc&$first=5

Kavramsal 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;

Yanıt

{
  "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": "..."
}

Sayfalandırma ve after anahtar sözcüğü hakkında daha fazla bilgi edinin.

Ek iç sütunlar ve altıncı yoklama satırı yükte görünmez.

Saklanan prosedürler

Saklı yordam destekli varlıklar için projeksiyon $select yan tümcesi olarak yorumlanmaz. Bunun yerine, sorgu dizesi anahtar/değer çiftleri (, $orderbyvb. gibi $filtertanınan sistem parametreleri dışında) saklı yordam parametreleri olarak kabul edilir. $select hiçbir etkisi yoktur; yordamın sonuç kümesi şekli tanımlar.

Örnek yapılandırma

{
  "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" ]
        }
      }
    }
  }
}

Ayrıca bakınız

Konsept REST GraphQL Amaç
Projection $select items Döndürülecek alanları seçme
Filtering $filter filtre Satırları koşula göre kısıtlama
Sıralama $orderby orderBy Sıralama düzenini tanımlama
Sayfa Boyutu $first first Sayfa başına öğe sayısını sınırlama
Devam $after sonra İmleç kullanarak son sayfadan devam et

Uyarı

REST anahtar sözcükleri, OData kurallarını izleyerek ile $başlar.