Příklady základního dotazování REST API IS FLORES
Dále jsou uvedeny příklady pro základní dotazování - query string (parametry URL).
Klauzule select slouží k výběru polí BO, která budou vrácena ve výsledku dotazu.
Výběr kolekce faktur, každý objekt faktury bude obsahovat field ID a field DisplayName, který bude přejmenován na DocNumber.
Tímto způsobem je možné do výsledku zahrnout i uživatelské nebo nepersistentní fieldy Business objektu. Nicméně nepersistentní fieldy BO doporučujeme používat jen v krajních případech, při jejich výběru dochází k degradaci výkonu.
http://localhost/data/issuedinvoices?select=ID,DisplayName+as+DocNumber
Všimněte si, že místo mezer je napsáno +. Alternativně by bylo možné mezeru zakódovat jako %20. (Jedná se URL kódování, viz Základní dotazování - query string (parametry URL) Jednotlivé fieldy jsou odděleny čárkou.
Výběr kolekce faktur, každý objekt faktury bude obsahovat všechny persistentní fieldy a uživatelské položky Business objektu.
http://localhost/data/issuedinvoices?select=*
Výběr kolekce faktur, každý objekt faktury bude obsahovat částku (Amount) a název firmy, na kterou je faktura vystavena (Firm_ID.Name). První varianta vrátí název firmy v JSON vlastnosti s názvem "Firm_ID.Name", stejným názvem, jaký byl použit pro jeho výběr. Ve druhé variantě je vidět, jak lze field přejmenovat pomocí konstrukce as (výsledná JSON vlastnost se bude jmenovat "FirmName").
http://localhost/data/issuedinvoices?select=Amount,Firm_ID.Namehttp://localhost/data/issuedinvoices?select=Amount,Firm_ID.Name+as+FirmName
Výběr kolekce faktur, každý objekt faktury bude obsahovat fieldy ID a DisplayName, který je tentokrát složen pomocí polí načtených z provázaných objektů. Jedná se o rychlejší variantu než je uvedena v prvním příkladu, ve kterém je použita nepersistentní položka (DisplayName); jak již bylo zmíněno výše, nepersistentní položky znamenají degradaci výkonu (při jejich použití dochází k načtení BO). Všimněte si operátoru || sloužícího ke spojování řetězců.
http://localhost/data/issuedinvoices?select=ID,DocQueue_ID.Code||'-'||OrdNumber||'/'||Period_ID.Code+as+DocNumber
Klauzule where slouží k omezení vybíraných dat. Jeho hodnotou je výraz, který vrací booleanovskou hodnotu. Ve výrazech je možné využívat následující operátory pro porovnávání:
| Operátory pro porovnávání | ||||
|---|---|---|---|---|
| Operátor | Název | Význam | Příklad použití | Popis příkladu |
|
eq = |
Je rovno | Porovnání ekvivalence; výsledek je kladný, pokud porovnávané hodnoty jsou stejné. Lze použít i pro porovnávání s null hodnotami. | Firm_ID eq '1100000101'
|
Platí, pokud Firm_ID obsahuje řetězec '1100000101'. |
|
ne <> |
Není rovno | Porovnání nonekvivalence; výsledek je kladný, pokud porovnávané hodnoty nejsou. stejné. Lze použít i pro porovnávání s null hodnotami. | Firm_ID neq null
|
Platí, pokud Firm_ID není null. |
|
gt > |
Větší než | Porovnání velikosti (čísel); výsledek je kladný, pokud je l-hodnota větší než r-hodnota. | Amount gt 1000
|
Platí, pokud je Amount větší než 1000. |
|
ge >= |
Větší než nebo rovno | Porovnání velikosti (čísel); výsledek je kladný, pokud je l-hodnota větší než nebo rovna r-hodnotě. | Amount ge 1000
|
Platí, pokud je Amount větší než nebo rovna 1000. |
|
lt < |
Menší než | Porovnání velikosti (čísel); výsledek je kladný, pokud je l-hodnota menší než r-hodnota. | Amount lt 1000
|
Platí, pokud je Amount menší než 1000. |
|
le <= |
Menší než nebo rovno | Porovnání velikosti (čísel); výsledek je kladný, pokud je l-hodnota menší než nebo rovna r-hodnotě. | Amount le 1000
|
Platí, pokud je Amount menší než nebo rovna 1000. |
|
|
Porovnání řetězce se vzorem; výsledek je kladný, pokud l-hodnota odpovídá řetězci na pravé straně operátoru. Ve vzoru lze použít zástupný znak *, který reprezentuje libovolný řetězec. |
Name like 'a*'
|
Platí, pokud Name začíná na "a". | |
| Je v | Porovná l-hodnotu s výčtem hodnot na pravé straně, platí pokud se hodnota ve výčtu hodnot vyskytuje. | Code in ('111', '222', '345')
|
Platí, pokud je Code má hodnotu '111' nebo '222' nebo '345'. | |
| výraz between nejnižší hodnota andnejvyšší hodnota |
Je v rozmezí | Porovná, zda-li hodnota výrazu spadá do intervalu od nejnižší hodnoty do nejvyšší hodnoty. Jedná se o uzavřený interval. | Amount between 10000 and 100000
|
Platí, pokud je Amount větší nebo roven 10000 a zároveň menší nebo roven 100000. |
Výrazy je možné kombinovat pomocí logických operátorů (log. operátory viz tabulka níže). Pořadí provádění operací lze určovat pomocí závorek.
| Logické (booleovské) operátory | ||||
|---|---|---|---|---|
| Operátor | Název | Význam | Příklad použití | Popis příkladu |
|
|
Negace | Neguje výraz, který za operátorem následuje | not (Firm_ID eq '1100000101')
|
Platí, pokud se Firm_ID nerovná řetězeci '1100000101' |
|
|
A zároveň | Platí, pokud platí (jsou kladné) oba operandy | (Firm_ID eq '1100000101') and (Amount ge 1000)
|
Platí, pokud se Firm_ID rovná řetězeci '1100000101' a zároveň je Amount větší než 1000 |
|
|
Nebo | Platí, pokud platí (je kladný) alespoň jeden z operandů | (Firm_ID eq '1100000101') or (Amount ge 1000)
|
Platí, pokud se Firm_ID rovná řetězeci '1100000101' anebo je Amount větší než 1000 |
Výběr kolekce faktur, vybrány jsou pouze faktury s částkou větší než 10000.
http://localhost/data/issuedinvoices?select=Amount,Firm_ID.Name+as+FirmName&where=Amount+gt+10000
Výběr kolekce faktur, vybrány jsou pouze faktury, které mají částku větší než 10000 a zároveň se Firm_ID nerovná '1100000101'.
http://localhost/data/issuedinvoices?select=Amount,Firm_ID.Name+as+FirmName&where=Amount+gt+10000+and+Firm_ID+ne+'1100000101'
Klauzule expand slouží k rozvíjení odkazovaných BO a kolekcí BO. Je používán tehdy, chceme-li jedním dotazem získat Business objekt včetně BO, které jsou s ním propojeny (typicky fieldy, jejichž název končí na "_ID"). Může se jednat o jednotlivé objekty nebo jejich kolekce (typicky Rows - řádky dokladu).
Chceme-li při použití expand použít i jiné než rozvíjené objekty, je nutné je uvést v klauzuli select.
Výběr kolekce faktur vydaných, každá faktura obsahuje částku (Amount) a celý objekt firmy (Firm_ID), na kterou byla vystavena.
http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID
Výběr kolekce faktur vydaných, každá faktura obsahuje částku (Amount) a objekt firmy (Firm_ID), na kterou byla vystavena - objekt firmy obsahuje pouze filedy specifikované v závorkách za názvem fieldu v klauzuli expand. Vybírané fieldy lze přejmenovávat pomocí operátoru as, stejně jako v klauzuli select.
http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)
Výběr kolekce faktur vydaných, každá faktura obsahuje částku (Amount), celý objekt firmy (Firm_ID), na kterou byla vystavena, a kolekci řádků faktury (Rows).
http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID,Rows
Klauzule groupby slouží k agregaci dat stejným způsobem, jako v SQL.
Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku ("Sum(Amount)") agregovanou dle firem, na které byly faktury vystaveny ("Firm_ID").
http://localhost/data/issuedinvoices?select=Sum(Amount),Firm_ID&groupby=Firm_ID
Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku ("Sum(Amount)") agregovanou dle firem, na které byly faktury vystaveny - Firm_ID obsahuje kompletní objekt firmy.
http://localhost/data/issuedinvoices?select=Sum(Amount)&groupby=Firm_ID&expand=Firm_ID
Klauzule orderby slouží k řazení výstupu stejným způsobem jako v SQL.
Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku (Amount) a objekt firmy, na kterou je faktura vystavena (Firm_ID). Data jsou řazena podle částky (výchozí je vzestupné řazení).
http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)&orderby=Amount
Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku (Amount) a objekt firmy, na kterou je faktura vystavena (Firm_ID). Faktury jsou řazeny dle kódu firmy, na kterou jsou vystaveny, a následně podle částky. Řadit je možné i podle polí odkazovaných objektů, a také vícero polí obecně.
http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)&orderby=Firm_ID.Code,Amount
Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku (Amount) a objekt firmy, na kterou je faktura vystavena (Firm_ID). Faktury jsou řazeny dle kódu firmy, na kterou jsou vystaveny vzestupně, a následně podle částky sestupně.
http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)&orderby=Firm_ID.Code,Amount+desc