Přeskočit na hlavní obsah

Uživatelské dotazy

Jak pracovat s uživatelskými dotazy přes REST API?

Autor: Petr Pech

Přes REST API lze s uživatelskými dotazy pracovat běžným způsobem jako s každou jinou evidencí — na adrese /c/{firma}/uzivatelsky-dotaz. Kromě toho je možné uložený dotaz také zavolat a získat jeho výsledek.


Volání dotazu

Nejjednodušší dotaz — tedy ten, který nemá parametry, nebo mají všechny parametry postačující výchozí hodnoty — zavoláte takto:

GET https://demo.flexibee.eu/c/demo/uzivatelsky-dotaz/1/call.xml

Číslo 1 odpovídá ID daného uživatelského dotazu; místo ID lze uvést i jeho zkratku ve tvaru code:ZKRATKA. Výstupní formát určíte příponou .xml nebo .json a fungují obvyklé parametry pro úroveň detailu i stránkování.

Výsledek dotazu se vrací v elementu DotazView, jehož vlastnosti odpovídají sloupcům definovaným u dotazu:

{
"winstrom": {
"@version": "1.0",
"DotazView": [
{
"nazev": "ABRA Flexi s.r.o.",
"sloupec": "dic",
"puvodni_hodnota": "CZ28019920",
"zmenena_na": "",
"uzivatelem": "admin",
"datcas": "2021.09.09 - 13:59:50"
}
]
}
}


Parametry dotazu

Má-li dotaz parametry, uveďte pro každý z nich parametr v URL. Pokud má dotaz například parametr datum, volání vypadá takto:

GET .../uzivatelsky-dotaz/1/call.xml?datum=2012-01-01

Má-li parametr dotazu mohutnost N, tedy lze zadat více hodnot, stačí parametr v URL zopakovat — například pro výběr několika firem:

GET .../uzivatelsky-dotaz/1/call.xml?firma=code:FIRMA1&firma=code:FIRMA2

V uloženém dotazu pak použijte operátor IN (<<firma>>).

ℹ️ Hodnoty parametrů se zapisují obvyklým způsobem a neuzavírají se do uvozovek. Nezapomeňte na správné zakódování v URL.


Předání parametrů metodou POST

Kromě GET lze dotaz zavolat i metodou POST, která umožňuje předat i velký počet parametrů v těle požadavku. Parametry jde předat třemi způsoby.

V JSON struktuře

POST .../uzivatelsky-dotaz/code:TEST_JSON_PARAMS/call.json
Content-Type: application/json
{
"param1": "hodnota1",
"param2": "hodnota2",
"param3": 123
}

V XML struktuře

POST .../uzivatelsky-dotaz/code:TEST_XML_PARAMS/call.xml
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<winstrom>
<param1>hodnota1</param1>
<param2>hodnota2</param2>
<param3>123</param3>
</winstrom>

Jako form data

Parametry lze poslat i jako application/x-www-form-urlencoded. V tomto případě nesmí být v URL přípona formátu — výstupní formát určete hlavičkou Accept:

POST .../uzivatelsky-dotaz/code:TEST_PARAMS/call
Content-Type: application/x-www-form-urlencoded
Accept: application/json
param1=hodnota1&param2=hodnota2&param3=888

⚠️ Pošlete-li form data na adresu s příponou, server se pokusí tělo rozebrat jako JSON či XML a odpověď je 400Failed to parse JSON body, respektive Failed to parse XML body.


Tisk uloženého dotazu

Uložené dotazy lze i tisknout. Pro každý uložený dotaz je nutné vytvořit vlastní tisk a u dotazu jej vybrat; tisk pak lze volat i přes REST API — postup popisuje článek Export tiskových sestav.


Související

Dostali jste odpověď na svou otázku?