Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Proyeksi hanya membantu Anda mengembalikan apa yang sebenarnya dibutuhkan klien Anda. Payload yang lebih kecil meningkatkan performa, mengurangi biaya jaringan, dan mengurangi overhead penguraian sisi klien. Penyusun API Data (DAB) mengimplementasikan proyeksi untuk REST melalui $select parameter kueri.
Nota
Nama parameter kueri REST (termasuk $select) peka huruf besar/kecil. Nama bidang juga peka huruf besar/kecil berdasarkan apa yang Anda konfigurasi atau terekspos.
Buka versi GraphQL dokumen ini.
Pilihan dasar
Pola
GET /api/{entity}?$select=FieldA,FieldB,FieldC
Jika $select dihilangkan, DAB mengembalikan semua bidang peran penelepon berwenang untuk membaca (tunduk pada include konfigurasi dan exclude dan izin tingkat bidang). Tidak ada token kartubebas seperti *; menghilangkan $select adalah bagaimana Anda meminta bentuk penuh yang diizinkan.
Examples
# 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
Kolom internal vs respons
Anda tidak diharuskan untuk memproyeksikan kunci primer atau mengurutkan bidang. Jika dihilangkan, mereka tidak muncul dalam respons JSON. Namun, DAB dapat secara internal mengambil kolom tambahan yang diperlukan untuk menerapkan kebijakan keamanan (filter tingkat baris, masker bidang) dan menangani kursor paginasi ($after / nextLink).
Nota
Kolom yang diambil secara internal ini dihapus sebelum respons kecuali Anda secara eksplisit memintanya.
Example
GET /api/book?$select=id,title&$orderby=publisher_id desc&$first=5
SQL Konseptual
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;
Jawaban
{
"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": "..."
}
Pelajari selengkapnya tentang penomoran halaman dan kata kunci setelah.
Kolom internal tambahan dan baris pemeriksaan keenam tidak terlihat dalam payload.
Prosedur yang disimpan
Untuk entitas yang didukung prosedur tersimpan, $select tidak ditafsirkan sebagai klausul proyeksi. Sebaliknya, pasangan kunci/nilai string kueri (kecuali parameter sistem yang dikenali seperti $filter, , $orderbydll.) diperlakukan sebagai parameter prosedur tersimpan.
$select tidak berpengaruh; tataan hasil prosedur menentukan bentuk.
Konfigurasi contoh
{
"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" ]
}
}
}
}
}
Lihat juga
| Konsep | REST | GraphQL | Tujuan |
|---|---|---|---|
| Projection | $select | items | Pilih bidang mana yang akan dikembalikan |
| Penyaringan | $filter | saringan | Membatasi baris menurut kondisi |
| Pengurutan | $orderby | orderBy | Tentukan urutan pengurutan |
| Ukuran halaman | $first | first | Membatasi jumlah item per halaman |
| Kelanjutan | $after | sesudah | Lanjutkan dari halaman terakhir menggunakan kursor |
Nota
Kata kunci REST dimulai dengan $, mengikuti konvensi OData.