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.
Pemfilteran mempersempit himpunan data besar hanya ke rekaman yang Anda butuhkan. Di REST, penyusun Data API (DAB) mendukung parameter kueri yang terinspirasi $filter OData. Setiap filter dikompilasi ke SQL berparameter untuk keamanan dan konsistensi.
Sekilas
| Operator | Meaning |
|---|---|
eq |
sama |
ne |
Tidak setara |
gt |
lebih dari |
ge |
lebih dari atau sama |
lt |
kurang dari |
le |
kurang dari atau sama |
and |
logis AND |
or |
logis OR |
not |
LOGICAL NOT |
( ) |
pengelompokan |
eq
Sama dengan. Mengembalikan rekaman di mana nilai bidang sama persis dengan literal yang disediakan atau null.
Dalam contoh ini, kita mendapatkan buku yang judulnya sama dengan 'Dune', bendera yang tersedia benar, harganya adalah 20, tanggal yang diterbitkan adalah 1 Januari 2024, dan peringkatnya null.
GET /api/books?$filter=
title eq 'Dune' and
available eq true and
price eq 20 and
published_on eq 2024-01-01T00:00:00Z and
rating eq null
Nota
$filter
eq null mendukung dan ne null langsung untuk perbandingan null.
SQL Konseptual
SELECT * FROM Books
WHERE title = 'Dune'
AND available = 1
AND price = 20
AND published_on = '2024-01-01T00:00:00Z'
AND rating IS NULL;
ne
Tidak sama dengan. Mengembalikan rekaman di mana nilai bidang tidak cocok dengan harfiah yang diberikan atau tidak null.
Dalam contoh ini, kami mendapatkan buku yang judulnya tidak 'Foundation', bendera yang tersedia tidak salah, harganya bukan nol, tanggal yang diterbitkan bukan 31 Desember 2023, dan peringkatnya tidak null.
GET /api/books?$filter=
title ne 'Foundation' and
available ne false and
price ne 0 and
published_on ne 2023-12-31T00:00:00Z and
rating ne null
Nota
Saat memfilter bidang tanggal atau tanggalwaktu, gunakan format UTC ISO 8601 yang tidak dikutip (yyyy-MM-ddTHH:mm:ssZ).
Format gaya kutipan atau OData tidak valid.
- Salah:
$filter=Date ge '2025-01-01' - Salah:
$filter=Date ge datetime'2025-01-01' - Benar:
$filter=Date ge 2025-01-01T00:00:00Z
SQL Konseptual
SELECT * FROM Books
WHERE title <> 'Foundation'
AND available <> 0
AND price <> 0
AND published_on <> '2023-12-31T00:00:00Z'
AND rating IS NOT NULL;
gt
Lebih besar dari. Mengembalikan rekaman di mana nilai bidang benar-benar lebih tinggi dari harfiah yang diberikan.
Dalam contoh ini, kita mendapatkan buku yang judulnya diurutkan menurut abjad setelah 'A', bendera yang tersedia benar, harganya lebih besar dari 10, dan tanggal yang diterbitkan setelah 1 Januari 2020.
GET /api/books?$filter=
title gt 'A' and
available gt false and
price gt 10 and
published_on gt 2020-01-01T00:00:00Z
SQL Konseptual
SELECT * FROM Books
WHERE title > 'A'
AND available > 0
AND price > 10
AND published_on > '2020-01-01T00:00:00Z';
ge
Lebih besar dari atau sama dengan. Mengembalikan rekaman di mana nilai bidang lebih tinggi dari atau sama dengan literal yang diberikan.
Dalam contoh ini, kita mendapatkan buku yang judulnya 'A' atau lebih baru, bendera yang tersedia benar, harganya setidaknya 10, dan tanggal yang diterbitkan adalah pada atau setelah 1 Januari 2020.
GET /api/books?$filter=
title ge 'A' and
available ge false and
price ge 10 and
published_on ge 2020-01-01T00:00:00Z
SQL Konseptual
SELECT * FROM Books
WHERE title >= 'A'
AND available >= 0
AND price >= 10
AND published_on >= '2020-01-01T00:00:00Z';
lt
Kurang. Mengembalikan rekaman di mana nilai bidang benar-benar lebih rendah dari literal yang diberikan.
Dalam contoh ini, kita mendapatkan buku yang judulnya diurutkan sebelumnya 'Z', bendera yang tersedia salah, harganya kurang dari 50, dan tanggal yang diterbitkan adalah sebelum 1 Januari 2030.
GET /api/books?$filter=
title lt 'Z' and
available lt true and
price lt 50 and
published_on lt 2030-01-01T00:00:00Z
SQL Konseptual
SELECT * FROM Books
WHERE title < 'Z'
AND available < 1
AND price < 50
AND published_on < '2030-01-01T00:00:00Z';
le
Kurang dari atau sama dengan. Mengembalikan rekaman di mana nilai bidang lebih rendah dari atau sama dengan harfiah yang diberikan.
Dalam contoh ini, kita mendapatkan buku yang judulnya diurutkan 'Z'sebelum atau sama dengan , bendera yang tersedia benar, harganya adalah 100 atau kurang, dan tanggal yang diterbitkan pada atau sebelum 1 Januari 2030.
GET /api/books?$filter=
title le 'Z' and
available le true and
price le 100 and
published_on le 2030-01-01T00:00:00Z
SQL Konseptual
SELECT * FROM Books
WHERE title <= 'Z'
AND available <= 1
AND price <= 100
AND published_on <= '2030-01-01T00:00:00Z';
and
Logis DAN. Menggabungkan beberapa kondisi yang semuanya harus benar agar rekaman cocok.
Dalam contoh ini, kita mendapatkan buku dengan judul 'Dune', bendera yang tersedia adalah benar, harganya kurang dari 50, tanggal yang diterbitkan adalah setelah 1 Januari 2020, dan peringkatnya null.
GET /api/books?$filter=
title eq 'Dune' and
available eq true and
price lt 50 and
published_on ge 2020-01-01T00:00:00Z and
rating eq null
SQL Konseptual
SELECT * FROM Books
WHERE title = 'Dune'
AND available = 1
AND price < 50
AND published_on >= '2020-01-01T00:00:00Z'
AND rating IS NULL;
or
Logis ATAU. Menggabungkan kondisi di mana setidaknya satu harus benar agar rekaman cocok.
Dalam contoh ini, kita mendapatkan buku dengan judul 'Dune', atau bendera yang tersedia benar, atau harganya lebih besar dari 20, atau tanggal yang diterbitkan adalah sebelum 1 Januari 2025, atau peringkatnya null.
GET /api/books?$filter=
title eq 'Dune' or
available eq true or
price gt 20 or
published_on lt 2025-01-01T00:00:00Z or
rating eq null
SQL Konseptual
SELECT * FROM Books
WHERE title = 'Dune'
OR available = 1
OR price > 20
OR published_on < '2025-01-01T00:00:00Z'
OR rating IS NULL;
not
LOGIS TIDAK. Meniadakan kondisi sehingga rekaman dikembalikan hanya jika kondisinya salah.
Dalam contoh ini, kita mendapatkan semua buku yang tidak memiliki judul 'Romance', tidak tersedia, tidak dikenakan biaya kurang dari $ 10, tidak diterbitkan sebelum 1 Januari 2020, dan tidak memiliki peringkat null.
GET /api/books?$filter=
not (
title eq 'Romance' and
available eq false and
price lt 10 and
published_on lt 2020-01-01T00:00:00Z and
rating eq null
)
SQL Konseptual
SELECT * FROM Books
WHERE NOT (
title = 'Romance'
AND available = 0
AND price < 10
AND published_on < '2020-01-01T00:00:00Z'
AND rating IS NULL
);
( ) Pengelompokan
Subekspresi grup sehingga Anda dapat mengontrol urutan evaluasi dalam filter kompleks.
Dalam contoh ini, kita mendapatkan buku dengan judul 'Fiction' atau 'SciFi', dan buku tersedia atau harga di bawah $25, dan tanggal yang diterbitkan setelah 1 Januari 2020, dan peringkatnya null.
GET /api/books?$filter=
(title eq 'Fiction' or title eq 'SciFi') and
(available eq true or price lt 25) and
published_on ge 2020-01-01T00:00:00Z and
rating eq null
SQL Konseptual
SELECT * FROM Books
WHERE (title = 'Fiction' OR title = 'SciFi')
AND (available = 1 OR price < 25)
AND published_on >= '2020-01-01T00:00:00Z'
AND rating IS NULL;
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.