List Request to Query String
listRequestToQueryString
yardımcı fonksiyonu, bir listeleme isteği nesnesini (IListRequest
) URL query string formatına dönüştürerek API çağrıları için kullanılabilir hale getirir. Bu fonksiyon, Ops Table ekosisteminde filtreleme, sıralama ve sayfalama gibi işlemleri query string olarak backend'e iletmek için kullanılır.
Ne İşe Yarar?
List Request to Query String:
- Listeleme isteğini URL uyumlu bir query string formatına dönüştürür.
- Filtreleme, sıralama ve toplama bilgilerini JSON formatında query string'e ekler.
- Gereksiz veya boş alanları query string'den çıkarır.
İş Mantığı
-
Veri Dönüşümü:
- Listeleme isteği (
IListRequest
) içindekifiltering
,sorting
, veaggregation
gibi alanlar, JSON string'e dönüştürülerek query string'e eklenir. pageNumber
verowCount
doğrudan query string'e yazılır.
- Listeleme isteği (
-
Boş ve Geçersiz Alanları Atma:
- Boş, null veya tanımlı olmayan alanlar query string'e eklenmez.
queryString.stringify
fonksiyonu ile bu işlem optimize edilir.
Fonksiyon Tanımı
import queryString from "query-string";
export function listRequestToQueryString(request: IListRequest): string {
const queryStringObject: Record<string, any> = {
pageNumber: request.pageNumber,
rowCount: request.rowCount,
};
if (request.filtering) {
queryStringObject.filtering = JSON.stringify(request.filtering);
}
if (request.sorting) {
queryStringObject.sorting = JSON.stringify(request.sorting);
}
if (request.aggregation) {
queryStringObject.aggregation = JSON.stringify(request.aggregation);
}
return queryString.stringify(queryStringObject, {
skipNull: true,
skipEmptyString: true,
});
}
Parametreler
Parametre | Tipi | Açıklama |
---|---|---|
request | IListRequest | Dönüştürülecek listeleme isteği nesnesi. |
Dönüş Değeri
- URL query string formatında bir dizge.
Kullanım Örneği
Girdi Verisi
const listRequest = {
pageNumber: 1,
rowCount: 10,
filtering: {
criterias: [{ field: "name", operator: "contains", value: "John" }],
},
sorting: { field: "date", order: "asc" },
aggregation: { criterias: [{ field: "amount", type: "sum" }] },
};