Preskoči na glavno vsebino

Podpora pre Ruby On Rails

Režim na zjednodušenie práce pri použití Ruby on Rails

Avtor: Petr Pech

Naším cieľom je, aby bolo REST API ABRA Flexi jednoducho použiteľné pre vývojárov. Preto existuje režim, ktorý zjednodušuje prácu pri použití Ruby on Rails, respektíve Active Resource.

⚠️ Podpora Ruby on Rails je zatiaľ experimentálna.


Zapnutie režimu

Režim sa zapína parametrom ?mode=ruby v URL. Vo výstupnom XML potom dostávate výsledky v tvare, ktorý Active Resource očakáva, a zapne sa podpora pre pluralizáciu názvov evidencií (Invoice → Invoices):

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

Parameter mode pozná jedinú hodnotu — malými písmenami ruby. Akákoľvek iná hodnota skončí chybou 400 s hlásením No enum constant …, takže aj preklep sa spozná okamžite.


Čo sa zmení vo výstupe

Bežný výstup má koreňový element winstrom:

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

S parametrom ?mode=ruby sa koreňový element pomenuje podľa evidencie, takže odpoveď zodpovedá tomu, ako Active Resource mapuje kolekcie na triedy:

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


Anglické názvy evidencií

Niektoré evidencie majú anglický alias, ktorý možno v URL použiť namiesto českého názvu. Bez parametra mode na neho server odpovie presmerovaním 301 na kanonickú adresu; s ?mode=ruby vráti dáta priamo so stavom 200, čo je pre Active Resource podstatné.

Alias v URL

Evidencia

invoice, invoices

faktura-vydana

order, orders

objednavka-prijata

contact, contacts

kontakt

attachment, attachments

priloha

events

udalost

roles

role

🚨 Aliasov je len niekoľko a nie sú úplné ani konzistentné — pre väčšinu evidencií anglický názov neexistuje a vráti 404. V integráciách preto vždy používajte české názvy evidencií; alias berte len ako pomôcku pre Active Resource.

Úplný zoznam evidencií aj s ich kanonickými názvami vráti:

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


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?