Co je Feed API?
Při synchronizaci dvou systémů máte dva hlavní přístupy:
card: Klasické API
icon: refresh-cw
Čtení dat přes API, detekce změn lokálně a odesílání pouze modifikací. Vyžaduje sledování změn a správu stavu na straně klienta.
**Nejlepší pro:**
- Synchronizace v reálném čase
- Časté malé aktualizace
- Jemná kontrola nad změnami
card: Feed API
icon: zap
Odeslání jednoho velkého JSON (i gigabajty) se všemi hodnotami. Systém efektivně porovnává a aktualizuje pouze skutečné změny.
**Nejlepší pro:**
- Hromadná synchronizace dat
- Pravidelné úplné synchronizace
- Jednodušší integrační logika
Jak Feed API funguje
1. Efektivní přednačtení
Systém efektivně přednačítá existující data pro porovnání pomocí optimalizovaných databázových dotazů.
2. Inteligentní párování
Záznamy jsou párovány pomocí vyhledávání (code:, id:) nebo unikátních identifikátorů. Dokonce i položky bez unikátních ID (jako řádkové položky) jsou párovány pomocí mechanismu pravděpodobnosti.
3. Detekce změn
Systém porovnává všechna data a identifikuje skutečné změny, čímž eliminuje falešné rozdíly.
4. Selektivní aktualizace
Do databáze se zapisují pouze skutečné změny, což minimalizuje režii a udržuje auditní stopy.
Základní komponenty
Feed API využívá dva výkonné nástroje: Mapper a Importer
card: Mapper
icon: settings
Transformuje externí datové formáty (XML, JSON, CSV) do interního formátu. Zpracovává mapování polí, transformace dat a konverze typů.
**Klíčové vlastnosti:**
- Podpora JSONPath a XPath
- Vyhodnocování výrazů
- Rozlišení vyhledávání
- Mapování vnořených entit
[navigate:/devdoc/mapper|Zobrazit dokumentaci|book-open]
card: Importer
icon: upload
Zpracovává mapovaná data a inteligentně aktualizuje databázi. Zpracovává operace upsert, mazání a správu vztahů.
**Klíčové vlastnosti:**
- Operace Upsert
- Párování založené na vyhledávání
- Pravděpodobnostní párování
- Dávkové zpracování
[navigate:/devdoc/imports|Zobrazit dokumentaci|book-open]
Klíčové direktivy
Základní direktivy pro operace Feed API
Vyhledávání (code:, id:, atd.)
Identifikujte záznamy pomocí různých typů vyhledávání namísto ID databáze.
"category": "code:ELECTRONICS"
"manufacturer": "id:12345"
"customer": "email:john@example.com"
@removeAll
Řídí, zda mají být existující položky, které nejsou ve feedu, odstraněny.
"items": [
{ "code": "ITEM-1", "quantity": 10 }
],
"items@removeAll": true // Odstranit položky, které nejsou ve feedu
Výchozí: true pro režim pole/objektu, false pro režim sloučení
@operation
Explicitně řídí typ operace pro 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é operace pomocí klauzulí where pro hromadné aktualizace nebo mazání.
{
"@operation": "update",
"@where": "category = 'code:OLD_CAT'",
"category": "code:NEW_CAT"
}
@atomic
Řídí chování transakcí a zpracování chyb.
"@atomic": "batch" // Doporučeno pro velké feedy
"@atomic": true // Všechno nebo nic
"@atomic": false // Nezávislé záznamy
Příklad: Feed produktů
Kompletní příklad synchronizace produktů pomocí Feed API
1. Zdrojová data (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. Konfigurace Mapperu
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"
}
]
}
**Co se stane:**
- Produkty jsou párovány podle kódu (`code:WIDGET-001`)
- Kategorie je vyřešena pomocí vyhledávání (`code:ELECTRONICS`)
- Existující varianty, které nejsou ve feedu, jsou odstraněny (`@removeAll: true`)
- Nové varianty jsou vytvořeny, existující jsou aktualizovány
- Do databáze se zapisují pouze skutečné změny
- Zpracování probíhá v dávkách pro optimální výkon
Příklad: Feed faktur
Synchronizace faktur s řádkový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
}
]
}
**Pravděpodobnostní párování:**
I když řádkové položky faktur obvykle nemají jedinečné identifikátory, systém používá mechanismus pravděpodobnosti k jejich spárování na základě produktu, množství a dalších polí. To zajišťuje přesné aktualizace bez duplicitních řádkových položek.
Generování feedů
Feed API může také generovat exporty dat v různých formátech
Feed API můžete použít nejen pro importy, ale také ke generování exportů dat:
Export založený na dotazech
Použijte dotazovací jazyk k extrahování dat a exportu v různých formátech.
GET /api/products?format=json&export=true
Reverzní Mapper
Použijte mappery v opačném směru k transformaci interních dat zpět do externích formátů.
Dopředný Mapper
Použijte dopředné mappery ke generování specializovaných exportních formátů.
Podporované exportní formáty:
JSON, XML, CSV, Excel, PDF, HTML, Vlastní
[navigate:/devdoc/exports|Zobrazit dokumentaci k exportu|file-text]
Doporučené postupy
- Používejte dávkový režim pro velké feedy — Nastavte
@atomic: "batch"pro optimální výkon s velkými datovými sadami. - Používejte vyhledávání namísto ID databáze — Preferujte
code:,email:nebo jiné obchodní klíče pro lepší přenositelnost. - Využijte @removeAll pro kompletní synchronizaci — Použijte
@removeAll: truek zajištění odstranění smazaných položek z cílového systému. - Nejprve testujte s malými datovými sadami — Ověřte svou logiku mapperu a importu s malou podmnožinou před zpracováním velkých feedů.
- Monitorujte výsledky importu — Kontrolujte protokoly importu a zprávy o chybách, abyste identifikovali a opravili problémy s daty.
Testovací nástroje
Interaktivní nástroje pro testování a ověřování nastavení Feed API
[navigate:/devdoc/test-mapper|Test Mapper|settings] [navigate:/devdoc/test-import|Test Import|upload]
Otestujte konfiguraci mapperu pomocí vzorových dat a otestujte importní operace
Související dokumentace
[navigate:/devdoc/mapper|Dokumentace k Mapperu|settings] [navigate:/devdoc/imports|Importní systém|upload] [navigate:/devdoc/exports|Exportní systém|file-text] [navigate:/devdoc/query|Dotazovací jazyk|database]