Fermer

juillet 18, 2018

Validation du message JSON dans IIB


Présentation

Ce blog aide à comprendre l'analyseur JSON dans IIB et comment valider le message JSON entrant

Qu'est-ce que JSON?

JavaScript Object Notation est un format de texte clair léger utilisé pour l'échange de données. C'est une collection de paire nom-valeur

Comment IIB analyse le message JSON?

Dans message IIB JSON réalisé en tant qu'objet (paire nom-valeur) et tableau. IIB fournit la fonctionnalité appelée domaine JSON. L'analyseur JSON et le sérialiseur traitent les messages ci-dessous Données sous le domaine JSON

L'analyseur JSON convertit le flux binaire entrant en structure arborescente logique. Il valide simplement la syntaxe du message JSON entrant, mais il ne validera pas le contenu / la valeur du message entrant par rapport à un schéma (Swagger.json). Parce que la modélisation JSON n'est pas supportée par IIB. Serializer convertit l'arborescence logique en flux binaire

L'image ci-dessous décrit l'arborescence logique JSON créée par JSON parser,

Si la syntaxe du message JSON entrant est incorrecte, IIB envoie la réponse d'erreur json parser comme ci-dessous:
Ex: BIP5705E: Des erreurs d'analyse JSON se sont produites. : F: build S1000_slot1 S1000_P src DataFlowEngine JSON ImbJSONParser.cpp: 257: ImbJSONParser :: parseLastChild: ComIbmWSInputNode: MF_JSON_POC # FCMComposite_1_1

BIP5701E: Une erreur d'analyse JSON s'est produite sur la ligne 6 colonne 1. Un invalide Le caractère JSON (UTF-8: '0x00000022') a été trouvé dans le flux binaire d'entrée. L'analyseur JSON s'attendait à trouver l'un des caractères ou types suivants: '"" ",", "'. Le code d'erreur interne est '0x00000108'. : F: build S1000_slot1 S1000_P src DataFlowEngine JSON ImbJSONDocHandler.cpp: 550: ImbJSONDocHandler :: onInvalidCharacter: ComIbmWSInputNode: MF_JSON_POC # FCMComposite_1_1

Création d'une API REST

Cette section explique comment créer API REST pour valider le message JSON à l'aide de xsd
ÉTAPE 1: Créer un projet API REST et spécifier le chemin de base de l'API

ÉTAPE 2: Définir le schéma JSON (Swagger.json) sous Définitions de modèle. La définition de modèle aide à créer un schéma JSON pour définir une structure du message JSON

Le schéma JSON sera créé sous le dossier OtherResources avec le nom par défaut "swagger.json".

Schéma JSON:

{"swagger": "2.0",
"info": {
"title": "JSONoverHTTP",
"version": "1.0.0",
"Description": "Validation personnalisée de meesage JSON"
},
"paths": {
"/ customValidation / xsd": {
"post": {
"operationId": " postXsd ",
" responses ": {
" 200 ": {
" description ":" L'opération a réussi. "
}},
" consume ": [ “application/json” ]
"produit": [ “application/json” ]
"description": "Insérer un xsd",
"parameters": [{
"name": "body",
"in" : "Body",
"schéma": {
"$ ref : "# / Definitions / PersonDetail"
},
"description": "Le corps de la requête pour l'opération",
"required": true
}]
}
}
},
"basePath": "/ json_overhttp / v1",
"définitions": {
"PersonDetail": {
"type": "objet",
" propriétés ": {
" name ": {
" type ":" chaîne "
},
" age ": {
" type ":" numéro "
},
"adresse": {
"type": "objet",
"propriétés": {
"rue": {
"type": "chaîne"
},
"city": {
"type": "chaîne"
},
"numéro de téléphone": {
"type": "numéro",
"format": " longueur = 10 "
}
}
},
" ValidationFlag ": {
" type ":" chaîne "
}
},
" requis ": [ “name” ]
}
}
}

ÉTAPE 3: Créer une nouvelle ressource

ÉTAPE 4: Définir le chemin de la ressource et sélectionner l'opération comme poste [19659007] ÉTAPE 5: cliquez sur l'icône de sous-flux pour implémenter la conversion de JSON en XML et la validation.

API REST Le flux de messages sera créé après l'étape ci-dessus .postXsd est un sous-flux où les implémentations sont effectuées.

ÉTAPE 6: Créez un XSD selon le document Swagger sous une bibliothèque partagée et nommez-le comme PersonDeatailSchema.xsd.

ÉTAPE 7: Référez-vous à l'API REST Library

l'API REST Sélectionnez à Gérer les références de bibliothèque à choisissez la bibliothèque partagée dans laquelle vous avez créé le schéma PersonDeatailSchema.xsd

ÉTAPE 8: Ajoutez un noeud de mappage à subflow (postXsd) pour convertir un message JSON en message xml.

ÉTAPE 9: sélectionnez Swagger.JSON comme entrée et PersonDeatailSchema.xsd comme format de sortie. Cela convertira le message JSON entrant en XML.

ÉTAPE 10: Après le mappage du noeud, ajoutez un noeud validateur. configurez les propriétés Domain comme XMLNSC et Validation comme contenu et valeur.

Note: Si le XSD est créé sous la bibliothèque, il n'est pas nécessaire de se référer explicitement dans le modèle de message. Au moment de l'exécution, le courtier prendra le bon schéma pour valider le message entrant.

ci-dessous est le postflow SubXsd,

Test du flux de messages

réponse de l'API REST comme "La valeur" 1234567B91 "n'est pas une valeur valide pour le type de données" phonetype ".

Numéro de téléphone défini comme type de données: nombre selon le schéma JSON et également nombre de téléphone défini en tant que nombre entier dans la définition du schéma xsd.

Après la conversion du message du noeud de validation JSON en XML, le message entrant est validé par rapport à la définition du schéma. Comme le champ PhoneNumber a la valeur de chaîne "1234567B91" dans le message entrant, le nœud validateur renvoie l'erreur

Conclusion

IIB ne prend pas en charge le modèle de message JSON mais vous permet d'accéder au message JSON. Donc, la validation peut être réalisée en créant du code personnalisé.




Source link