Při výměně dat mezi aplikacemi, webovými službami nebo API může i ta nejmenší strukturální chyba způsobit selhání celého systému. Proto je validace dat JSON nezbytným krokem v mnoha scénářích, včetně integrace API, importu/exportu dat, konfigurace aplikací a komunikace mezi mikroslužbami. 4D 21 R3 není jen aktualizací návrhu 2020-12, ale představuje plné sladění s moderními webovými a API standardy. Validace JSON se stávají výkonnějšími, expresivnějšími a plně kompatibilními s dnešními nástroji.
Co je to schéma?
Schéma JSON vám umožňuje přesně popsat očekávanou strukturu dokumentu: datové typy, povinná pole, povolené hodnoty a formáty (e-mail, URL atd.).
Díky tomuto schématu můžete zaručit kvalitu a spolehlivost výměny dat, aniž byste museli ručně psát ověřovací kód. Pokud přijatý JSON neodpovídá definovaným pravidlům, 4D vám přesně řekne, kde a proč ověření selhalo.
To šetří značné množství času, zvyšuje bezpečnost vašich aplikací a poskytuje pevný základ pro navrhování robustních rozhraní nebo spolehlivých webových služeb.
4D nabízí příkaz ` JSON Validate ` pro porovnání objektu JSON se schématem vyhovujícím standardu JSON Schema. Ve verzi 4D 21 R3 tento příkaz zaznamenal významný pokrok; nyní podporuje nejnovější verze standardu (Draft 2020-12) a nabízí větší flexibilitu, nová klíčová slova (const, if/then/else, unevaluatedProperties, …), nativní ověřování datumu v 4D a lepší interoperabilitu s moderními nástroji.
Příklad: použití podmíněných pravidel
Nový standard JSON Schema zavádí výkonná podmíněná pravidla, která vám umožňují zakódovat část vaší obchodní logiky přímo do schématu, což bylo s Draft-04 obtížné nebo nemožné.
Vezměme si klasický příklad: ověření platby v závislosti na zvolené metodě. V závislosti na způsobu platby:
- pokud se jedná o kreditní kartu, musí být zadány „cardNumber“ a „expiryDate“,
- pokud se jedná o bankovní převod, jsou vyžadovány „iban“ a „bic“,
- v ostatních případech (například při platbě v hotovosti) není nutné vyplňovat žádné z těchto polí.
V Draft-04 jste museli všechny tyto kontroly implementovat ručně ve svém kódu 4D. Schéma mohlo definovat pouze typy, základní omezení a povinná pole, ale nemohlo vyjádřit podmíněnou logiku jako „pokud paymentMethod = credit_card, pak vyžaduj cardNumber a expiryDate“.
Draft-2020-12 vše mění. Nyní můžete tato podmíněná pravidla definovat přímo v JSON schématu. Zde je praktický příklad:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Order Schema",
"type": "object",
"properties": {
"orderId": { "type": "integer" },
"customer": { "type": "string" },
"amount": { "type": "number", "minimum": 0 },
"paymentMethod": {
"type": "string",
"enum": ["credit_card", "bank_transfer", "cash"]
},
"cardNumber": { "type": "string", "pattern": "^[0-9]{16}$" },
"expiryDate": { "type": "string", "pattern": "^(0[1-9]|1[0-2])/[0-9]{2}$" },
"iban": { "type": "string" },
"bic": { "type": "string" }
},
"required": ["orderId", "customer", "amount", "paymentMethod"],
"if": { "properties": { "paymentMethod": { "const": "credit_card" } } },
"then": { "required": ["cardNumber", "expiryDate"] },
"else": {
"if": { "properties": { "paymentMethod": { "const": "bank_transfer" } } },
"then": { "required": ["iban", "bic"] }
}
}
Toto schéma kombinuje:
- regulární výrazy (vzory) pro kontrolu formátu čísel;
- podmínková pravidla (if/then/else) pro přizpůsobení povinných polí v závislosti na typu platby.
Poté na straně 4D jednoduše ověřte odpověď:
var $response; $schema; $result : Object
$response := JSON Parse($json; *)
$schema := JSON Parse($jsonSchema)
$result := JSON Validate($response; $schema)
If ($result.success)
// your treatment
Else
// manage errors
End if
Díky vestavěné validaci zůstává váš kód 4D jednoduchý: není třeba ručně testovat podmínky na základě platební metody.
Schéma se stává skutečnou funkční specifikací, kterou lze sdílet v rámci backendového týmu, front-endu nebo dokonce s externími partnery.
Kompatibilita
Každé schéma JSON specifikuje standard, který se má použít, prostřednictvím atributu $schema.
V 4D jsou podporovány pouze dva parsery JSON schémat:
- Draft-04
- Draft 2020-12
Vybraný parser je určen výhradně hodnotou vlastnosti $schema v dokumentu JSON schématu.
Například:
- Chcete-li použít Draft-04:
„$schema“: „http://json-schema.org/draft-04/schema#“
- Pro použití Draft 2020-12:
"$schema": "https://json-schema.org/draft/2020-12/schema"
To znamená, že vaše stávající schémata založená na Draft-04 budou i nadále perfektně fungovat, přičemž vám zůstane svoboda přijmout novou verzi vlastním tempem.
Pokud není atribut $schema specifikován, 4D použije jako výchozí Draft-04. Důrazně však doporučujeme specifikovat standard, který chcete použít. Pokud sdílíte své schéma za účelem ověření odpovědí z vašeho REST API nebo za účelem vysvětlení formátu odpovědi umělé inteligenci, musí vědět, kterou verzi schématu používáte.
Hlavní výhody
Ve verzi 4D 21 R3 je příkaz JSON Validate v souladu s moderními standardy validace JSON, což umožňuje validovat data pocházející z AI API nebo jakékoli jiné webové služby. Získáte následující výhody:
- podpory nejnovějšího standardu JSON Schema,
- výkonnějších nových klíčových slov,
- lepší kompatibilitu s průmyslovými nástroji
- při zachování kompatibility s vašimi stávajícími schématy.
Kombinací příkazu JSON Validate s voláním API ve vašich projektech 4D posílíte spolehlivost vašich integrací AI a zabezpečíte toky dat bez jakéhokoli dalšího úsilí. Tato aktualizace řadí 4D mezi platformy schopné komunikovat v jazyce moderních API, mikroslužeb a generativní AI.
K tomuto příspěvku zatím nelze přidávat komentáře.