Čo je to?
Poznámka pre administrátora: Toto je vysokorýchlostná „diaľnica“ na presun obrovského množstva dát medzi vaším e-shopom a inými obchodnými systémami (ako je váš sklad alebo účtovný softvér). Je navrhnutá tak, aby efektívne spracovala tisíce alebo dokonca milióny záznamov.
Pre koho je to určené? Administrátori by si to mali prečítať, aby pochopili, ako platforma zostáva synchronizovaná s vašimi ostatnými obchodnými nástrojmi. Zatiaľ čo technické „ako na to“ je pre vašich vývojárov, mali by ste vedieť, že táto funkcia zaisťuje, že vaše skladové zásoby produktov, ceny a objednávky sú vždy aktuálne vo všetkých vašich systémoch.
Kľúčové výhody pre e-shop:
- Nepriestrelná presnosť dát: Automaticky porovnáva celý váš katalóg produktov a aktualizuje len to, čo sa skutočne zmenilo, čím predchádza chybám v dátach.
- Rozsiahla synchronizácia: Bez námahy spracuje obrovské súbory (dokonca aj gigabajty), ktoré by štandardné nástroje na import zlyhali.
- Zjednodušená logika: Namiesto manuálneho sledovania každej malej zmeny môžu vaši vývojári jednoducho poslať „celý obraz“ a nechať náš systém, aby sa postaral o zvyšok.
- Automatické čistenie: Zabezpečte, aby produkty odstránené z vášho skladového systému boli automaticky skryté alebo odstránené aj z vášho e-shopu.
Čo je Feed API?
Pri synchronizácii dvoch systémov máte dva hlavné prístupy:
card: Klasické API
icon: refresh-cw
Číta dáta cez API, lokálne detekuje zmeny a posiela len modifikácie. Vyžaduje sledovanie zmien a správu stavu na strane klienta.
**Najlepšie pre:**
- Synchronizáciu v reálnom čase
- Časté malé aktualizácie
- Jemné riadenie zmien
card: Feed API
icon: zap
Posiela jeden veľký JSON (aj gigabajty) so všetkými hodnotami. Systém efektívne porovnáva a aktualizuje len skutočné zmeny.
**Najlepšie pre:**
- Synchronizáciu hromadných dát
- Pravidelné úplné synchronizácie
- Jednoduchšiu integračnú logiku
Ako funguje Feed API
1. Efektívne prednačítanie
Systém efektívne prednačíta existujúce dáta na porovnanie pomocou optimalizovaných databázových dotazov.
2. Inteligentné párovanie
Záznamy sa párujú pomocou vyhľadávaní (code:, id:) alebo jedinečných identifikátorov. Dokonca aj položky bez jedinečných ID (ako sú riadkové položky) sa párujú pomocou pravdepodobnostného mechanizmu.
3. Detekcia zmien
Systém porovnáva všetky dáta a identifikuje skutočné zmeny, čím eliminuje falošné rozdiely.
4. Selektívne aktualizácie
Do databázy sa zapisujú len skutočné zmeny, čím sa minimalizuje réžia a udržiavajú sa záznamy o audite.
Základné komponenty
Feed API využíva dva výkonné nástroje: Mapovač a Importér
card: Mapovač
icon: settings
Transformuje externé dátové formáty (XML, JSON, CSV) do interného formátu. Spracováva transformácie Mapovača, dátové transformácie a konverzie typov.
**Kľúčové funkcie:**
- Podpora JSONPath a XPath
- Vyhodnocovanie výrazov
- Rozlíšenie vyhľadávania
- Mapovanie vnorených entít
[navigate:mapper.md|Zobraziť dokumentáciu|book-open]
card: Importér
icon: upload
Spracováva mapované dáta a inteligentne aktualizuje databázu. Spracováva operácie upsert, vymazania a správu vzťahov.
**Kľúčové funkcie:**
- Operácie upsert
- Párovanie založené na vyhľadávaní
- Pravdepodobnostné párovanie
- Dávkové spracovanie
[navigate:imports.md|Zobraziť dokumentáciu|book-open]
Kľúčové direktívy
Základné direktívy pre operácie Feed API
Vyhľadávania (code:, id:, atď.)
Identifikujte záznamy pomocou rôznych typov vyhľadávania namiesto ID databázy.
"category": "code:ELECTRONICS"
"manufacturer": "id:12345"
"customer": "email:john@example.com"
@removeAll
Určuje, či sa majú odstrániť existujúce položky, ktoré nie sú vo feede.
"items": [
{ "code": "ITEM-1", "quantity": 10 }
],
"items@removeAll": true // Remove items not in feed
Predvolené: true pre režim poľa/objektu, false pre režim zlúčenia
@operation
Explicitne riadi typ operácie pre každý záznam.
{ "@operation": "upsert", "code": "PROD-1", "name": "Product 1" }
{ "@operation": "delete", "code": "PROD-OLD" }
{ "@operation": "create", "name": "New Product" }
Hodnoty: create, update, upsert, delete
@where
Hromadné operácie pomocou klauzúl where pre hromadné aktualizácie alebo vymazania.
{
"@operation": "update",
"@where": "category = 'code:OLD_CAT'",
"category": "code:NEW_CAT"
}
@atomic
Riadi správanie transakcií a spracovanie chýb.
"@atomic": "batch" // Recommended for large feeds
"@atomic": true // All-or-nothing
"@atomic": false // Independent records
Príklad: Feed produktov
Kompletný príklad synchronizácie produktov cez Feed API
1. Zdrojové dáta (externý systém)
{
"products": [
{
"productCode": "WIDGET-001",
"productName": "Super Widget",
"price": 99.99,
"categoryCode": "ELECTRONICS",
"variants": [
{
"sku": "WIDGET-001-RED",
"color": "Red",
"stock": 50
},
{
"sku": "WIDGET-001-BLUE",
"color": "Blue",
"stock": 30
}
]
},
{
"productCode": "GADGET-002",
"productName": "Mega Gadget",
"price": 149.99,
"categoryCode": "ELECTRONICS"
}
]
}
2. Konfigurácia Mapovača
type JSON
@atomic = "batch"
@language = "en"
products = '$.products[*]' {
id[code] = 'productCode'
name = 'productName'
price = 'price'
category[code] = 'categoryCode'
variants = 'variants[*]' {
code = 'sku'
color = 'color'
stockQuantity = 'stock'
@removeAll = "true"
}
}
3. Výsledný import JSON
{
"@atomic": "batch",
"products": [
{
"id": "code:WIDGET-001",
"name": "Super Widget",
"price": 99.99,
"category": "code:ELECTRONICS",
"variants": [
{
"code": "WIDGET-001-RED",
"color": "Red",
"stockQuantity": 50
},
{
"code": "WIDGET-001-BLUE",
"color": "Blue",
"stockQuantity": 30
}
],
"variants@removeAll": true
},
{
"id": "code:GADGET-002",
"name": "Mega Gadget",
"price": 149.99,
"category": "code:ELECTRONICS"
}
]
}
**Čo sa stane:**
- Produkty sú spárované podľa kódu (`code:WIDGET-001`)
- Kategória je rozlíšená pomocou vyhľadávania (`code:ELECTRONICS`)
- Existujúce varianty, ktoré nie sú vo feede, sú odstránené (`@removeAll: true`)
- Nové varianty sú vytvorené, existujúce sú aktualizované
- Do databázy sa zapisujú len skutočné zmeny
- Spracovanie sa vykonáva v dávkach pre optimálny výkon
Príklad: Feed faktúr
Synchronizácia faktúr s riadkovými položkami
{
"@atomic": "batch",
"invoices": [
{
"id": "code:INV-2024-001",
"customer": "code:CUSTOMER-123",
"issueDate": "2024-01-15",
"dueDate": "2024-02-15",
"items": [
{
"product": "code:WIDGET-001",
"quantity": 5,
"unitPrice": 99.99,
"description": "Super Widget - Red"
},
{
"product": "code:GADGET-002",
"quantity": 2,
"unitPrice": 149.99,
"description": "Mega Gadget"
}
],
"items@removeAll": true
}
]
}
**Pravdepodobnostné párovanie:**
Aj keď riadkové položky faktúry zvyčajne nemajú jedinečné identifikátory, systém používa pravdepodobnostný mechanizmus na ich párovanie na základe produktu, množstva a iných polí. To zaisťuje presné aktualizácie bez duplicitných riadkových položiek.
Generovanie feedov
Feed API dokáže generovať aj exporty dát v rôznych formátoch
Feed API môžete použiť nielen na importy, ale aj na generovanie exportov dát:
Export založený na dotazoch
Použite dotazovací jazyk na extrahovanie dát a ich export v rôznych formátoch.
GET /api/products?format=json&export=true
Reverzný Mapovač
Použite mapovače reverzne na transformáciu interných dát späť do externých formátov.
Dopredný Mapovač
Použite dopredné mapovače na generovanie špecializovaných exportných formátov.
Podporované exportné formáty:
JSON, XML, CSV, Excel, PDF, HTML, Vlastné
Osvedčené postupy
- Používajte dávkový režim pre veľké dátové toky — Nastavte
@atomic: "batch"pre optimálny výkon s veľkými súbormi dát. - Používajte vyhľadávania namiesto ID databázy — Uprednostnite
code:,email:alebo iné obchodné kľúče pre lepšiu prenosnosť. - Využite @removeAll pre kompletnú synchronizáciu — Použite
@removeAll: true, aby ste zabezpečili odstránenie vymazaných položiek z cieľového systému. - Najprv testujte s malými súbormi dát — Overte svoj mapovač a logiku importu s malou podmnožinou pred spracovaním veľkých dátových tokov.
- Monitorujte výsledky importu — Kontrolujte protokoly importu a hlásenia chýb, aby ste identifikovali a opravili problémy s dátami.
Súvisiaca dokumentácia
[navigate:mapper.md|Dokumentácia mapovača|settings] [navigate:imports.md|Importovací systém|upload] [navigate:query.md|Jazyk dotazov|database]