Přeskočit na hlavní obsah

Podpora pro Ruby On Rails

Režim pro zjednodušení práce při použití Ruby on Rails

Autor: Petr Pech

Naší snahou je, aby bylo REST API ABRA Flexi snadno použitelné pro vývojáře. Proto existuje režim, který zjednodušuje práci při použití Ruby on Rails, respektive Active Resource.

⚠️ Podpora Ruby on Rails je zatím experimentální.


Zapnutí režimu

Režim se zapíná parametrem ?mode=ruby v URL. Ve výstupním XML pak dostáváte výsledky ve tvaru, který Active Resource očekává, a zapne se podpora pro pluralizaci názvů evidencí (Invoice → Invoices):

# GET /invoices.xml?mode=ruby
Invoice.find(:all, :params => { :mode => 'ruby' })

Parametr mode zná jedinou hodnotu — malými písmeny ruby. Jakákoli jiná hodnota skončí chybou 400 s hlášením No enum constant …, takže i překlep se pozná okamžitě.


Co se změní ve výstupu

Běžný výstup má kořenový element winstrom:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<faktura-vydana>
<id>1</id>
</faktura-vydana>
</winstrom>

S parametrem ?mode=ruby se kořenový element pojmenuje podle evidence, takže odpověď odpovídá tomu, jak Active Resource mapuje kolekce na třídy:

<?xml version="1.0" encoding="utf-8"?>
<faktura-vydana version="1.0">
<faktura-vydana>
<id>1</id>
</faktura-vydana>
</faktura-vydana>


Anglické názvy evidencí

Některé evidence mají anglický alias, který lze v URL použít místo českého názvu. Bez parametru mode na něj server odpoví přesměrováním 301 na kanonickou adresu; s ?mode=ruby vrátí data přímo se stavem 200, což je pro Active Resource podstatné.

Alias v URL

Evidence

invoice, invoices

faktura-vydana

order, orders

objednavka-prijata

contact, contacts

kontakt

attachment, attachments

priloha

events

udalost

roles

role

🚨 Aliasů je jen několik a nejsou úplné ani konzistentní — pro většinu evidencí anglický název neexistuje a vrátí 404. V integracích proto vždy používejte české názvy evidencí; alias berte jen jako pomůcku pro Active Resource.

Úplný seznam evidencí i s jejich kanonickými názvy vrátí:

GET https://demo.flexibee.eu/c/demo/evidence-list.json


Související

Dostali jste odpověď na svou otázku?