Przejdź do głównej treści

Parametry w endpointach typu lista


Parametry w endpointach typu lista

W systemie udostępniono endpointy, za pomocą których można przeszukiwać całe zbiory danych.

Np: GET /contacts pozwala pobierać wiele klientów

Dostępne są różne operatory, które pomagają w sortowaniu, filtrowaniu czy ograniczaniu ilości pobieranych danych ze zbioru

Filtrowanie po kolumnach

W każdym endpoincie możliwe jest szukanie po każdej kolumnie, która jest zwracana w odpowiedzi. Funkcjonalność nie działa dla kolumn z encjo dodatkowych

/contacts?name_1=Symfonia

W przypadku kiedy chcemy wyszukać po frazie składającej się z dwóch słów np. „sąd rejonowy”, wtedy słowa oddzielamy znakiem plusa.

/contacts?name_1=sąd+rejonowy

Jeżeli z jedną kolumną chcemy zrobić kilka porównań, wtedy należy użyć typu tablicowego. Do nazwy zmiennej należy dodać kwadratowe nawiasy &pole1[]=fraza1&pole1[]=fraza2

/contacts?name_1[]=szpital&name_1[]=kliniczny

Aby móc szukać po niepełnych frazach i słowach, należy użyć jednej ze specjalizowanych funkcji poprzez doklejenie do jej nazwy rozszerzenia:

  • -not – Negacja

Przykład: &pole1-not=fraza

Wynikowy SQL: pole1 != 'fraza'

  • -like – Prosty like

Przykład: &pole1-like=fraza%

Wynikowy SQL: pole1 like 'fraza%'

  • -notlike – Negacja do powyższego like

Przykład: &pole1-notlike=fraza%

Wynikowy SQL: pole1 not like 'fraza%'

  • -ilike – Wyszukiwanie ciągu porównując go do początku każdego wyrazu (działa jak systemowe lookupy)

Przykład: &pole1-ilike=fraza

Wynikowy SQL: pole1 ~* E'(^| |-|\\'|")fraza'

  • -notilike – negacja do powyższego

Przykład: &pole1-ilike=fraza

Wynikowy SQL: pole1 !~* E'(^| |-|\\'|")fraza'

uwaga

Powyższe funkcje działają tylko dla kolumn typu string.

Operacje daty

Możemy również dodać filtr, który zwróci nam rekordy z odpowiedniego okresu, do tego należy wykorzystać następujące funkcje:

  • -start początek zakresu
  • -end koniec zakresu

Powyższe funkcje można ze sobą łączyć:

  • Użycie -start Przykład: pole1-start=2020-11-01

Wynikowy SQL: pole1 >= '2020-11-01'

  • Użycie -end Przykład: pole1-end=2020-11-01

Wynikowy SQL: pole1 <= '2020-11-01'

  • Użycie -start i -end Przykład: pole1-start=2020-11-01&pole1-end=2020-11-30

Wynikowy SQL: pole1 BETWEEN '2020-11-01' AND '2020-11-30'

Operatory matematyczne

System udostępnia także zbiór funkcji, które możemy wykorzystać do porównania liczb. Wywołanie bez funkcji &pole1=1 jest jednoznaczne z zapisem SQL pole1 = 1.

  • -not – Negacja

Przykład: &pole1-not=1

Wynikowy SQL: pole1 != 1

  • -gt – jednoznaczne z pole1 > 2

Przykład: &pole1-gt=2 SQL: pole1 > 2

  • -gte – jednoznaczne z pole1 >= 2

Przykład: &pole1-gte=2 SQL: pole1 >= 2

  • -lt – jednoznaczne z pole1 < 2

Przykład: &pole1-lt=2 SQL: pole1 < 2

  • -lte – jednoznaczne z pole1 <= 2

Przykład: &pole1-lte=2 SQL: pole1 <= 2

Wartość po której ma się odbyć przeszukiwanie recordów

/contacts?_search=Symfonia

zostaną zwróceni ci klienci którzy, w dowolnej kolumnie mają słowo 'Symfonia'

_fields

Nazwy pól rozdzielone przecinkiem, które mają zostać zwrócone w odpowiedzi.

Przykład: _fields=pole1,pole2,pole3

/contacts?_fields=contid,name_1,email_

_filter

Jeśli tego parametru nie podasz, to wszystkie warunki zostaną złożone znacznikiem AND. Aby to zmienić możesz użyć następujących wartości: () OR AND <nazwy pól, których używasz w query>

Przykład 1: &_filter=pole1-OR-pole2

Lista klientów zawierających w nazwie (name_1 lub name_2) słowo poznań

/contacts?_filter=name_1-or-name_2&name_1=poznań&name_2=poznań

Przykład 2: &_filter=(pole1-OR-pole2)AND-pole3

Lista klientów zawierających w nazwie (name_1 lub name_2) słowo poznań oraz utworzonych od stycznia 2020 roku

/contacts?_filter=(name_1-or-name_2)and-adddat&name_1=poznań&name_2=poznań&adddat-start=2020-01-01

_sort

Nazwy pól, po których ma odbyć się sortowanie rosnące. Jeśli chcemy sortowanie malejące do nazwy pola doklejamy prefix -

Przykład 1: &_sort=pole1 – sortowanie rosnące

/contacts?_sort=name_1

Przykład 2: &_sort=-pole1 – sortowanie malejące

/contacts?_sort=-name_1

_limit

Ile rekordów ma zostać zwróconych.

/contacts?_limit=100

_offset

Od którego rekordu mają zostać zwracane wyniki.

/contacts?_offset=100