Cet article présente la procédure minimale d'utilisation du proxy Ultipa RESTful API.
Change Log (V4.0 à V4.2)
- Utilisation de Go SDK v4.2
- Abandon du paramètre de ligne de commande
-bodytype
- Ajout des interfaces
/uql/stream
,/update/nodes
et/update/edges
Prérequis
- un terminal en ligne de commande compatible avec votre système d'exploitation :
- Linux ou MacOS : bash, zsh, tcsh
- Windows : PowerShell
- une version de Ultipa Importer compatible avec votre système d'exploitation
Démarrer le service API
- Afficher l'aide
./ultipa_restful_api.exe --help
- Afficher la version actuelle
./ultipa_restful_api.exe --version
- Démarrer le service API
./ultipa_restful_api.exe --hosts 192.168.1.85:61095,192.168.1.87:61095,192.168.1.88:61095 -u employee -p joaGsdf -w 3
Note: -hosts
, -u
et -p
sont équivalents à --hosts
, --username
et --password
Autres paramètres :
Paramètre |
Description | Valeur par défaut |
---|---|---|
-l --listen | Le réseau et le port initial à écouter | 0.0.0.0:7001 |
-w --workers | Le nombre de workers en arrière-plan (threads), ex : 5 workers seront les 7001-7005 par défaut | 0 |
-g --graph | Le nom du graphset | 'default' |
-b --boost | Utiliser SimpleCache | (Ne pas utiliser le cache) |
-c --consistency | Utiliser le leader pour garantir une lecture cohérente | (Ne pas utiliser le leader) |
-batch --batch | La taille du lot (nombre d'enregistrements) pour /insert/nodes et /insert/edges |
5000 |
-d --duration | Le temps d'attente pour l'insertion par lot (millisecondes) | 1000 |
-hb --heartbeat | Les secondes du heartbeat pour toutes les instances | 5 |
-sd --schema_cache_duration | Les millisecondes du heartbeat lors de l'acquisition de la liste des schémas pendant l'insertion | 5000 |
Informations de base de l'API
- Type de requête : POST
- URL de la requête :
- Linux : le serveur Ultipa auquel le service API actuel se connecte, par exemple 'http://192.168.1.88'
- Windows/MacOS : l'adresse locale du service API actuel, 'http://127.0.0.1'
- Port de la requête : les ports valides définis via
-w
et-l
lors du démarrage du service API - Type de paramètre du corps : JSON, FORM
Se connecter au service Ultipa
- URL de la requête
.../login
- Exemple de requête
{
"username": "employee",
"password": "joaGsdf"
}
- Réponse : la valeur du token après connexion
Les autres interfaces API doivent toutes comporter cette valeur token dans le Cookie dans les En-têtes,
ultipa=<token_value>
, avec Content_Typeapplication/json
.
Envoyer UQL
- URL de la requête
.../uql
- Paramètre de la requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
uql | string | oui | Instruction UQL |
graph | string | non | Le nom du graphset (valeur par défaut : le graphset désigné lors du démarrage du service API) |
- Exemple de requête
{
"uql": "find().nodes({name == \"abc\"}) return count(nodes)",
"graph": "test_text"
}
- Réponse de succès
{
"Data": [
{
"Name": "count(nodes)",
"PropertyType": 4,
"Rows": [
2
]
}
],
"Graph": "test_text",
"Statistic": {
"NodeAffected": 0,
"EdgeAffected": 0,
"TotalCost": 0,
"EngineCost": 0
},
"Status": {
"Message": "",
"Code": 0
}
}
Envoyer UQL et limiter les retours
- URL de la requête
.../uql/stream
- Paramètre de la requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
uql | string | oui | Instruction UQL |
graph | string | non | Le nom du graphset (valeur par défaut : le graphset désigné lors du démarrage du service API) |
package_num | int | non | Le nombre de paquets à retourner (valeur par défaut : 0, requête mais ne pas retourner) |
- Exemple de requête
{
"uql": "find().nodes({name == \"abc\"}) return nodes",
"graph": "test_text",
"package_num": 1
}
- Réponse de succès
Insérer des Nodes
- URL de la requête
.../insert/nodes
- Paramètre de la requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
nodes | [{},{},...] (JSON), map (FORM) | oui | Propriétés de Node, doivent inclure toutes les propriétés personnalisées, ne pas supporter _uuid ; dans des outils tels que Postman, définir plusieurs nodes de type {} comme paramètre FORM |
schema | string | oui | Node schema |
graph | string | non | Le nom du graphset (valeur par défaut : le graphset désigné lors du démarrage du service API) |
sync | bool | non | Si retourner le statut de la requête (valeur par défaut : false). Une valeur 'true' induira un temps d'attente de batch (-d , --duration ) lorsque le volume de données est inférieur à la taille de batch (-b , --batch ), ce qui affectera la performance d'insertion |
- Exemple de requête
{
"nodes": [{"name":"Jason","_id":"USER001"},{"name":"Alice"}],
"schema": "default",
"graph": "test_text",
"sync": true
}
- Réponse de succès
{
"Msg": "Insert Nodes Success: [{\"_id\":\"USER001\",\"name\":\"Jason\"},{\"name\":\"Alice\"}]"
}
Insérer des Edges
- URL de la requête
.../insert/edges
- Paramètre de la requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
edges | [{},{},...] (JSON), map (FORM) | oui | Propriétés d'Edge, doivent inclure _from &_to et toutes les propriétés personnalisées, ne pas supporter _uuid , _from_uuid ou _to_uuid ; dans des outils tels que Postman, définir plusieurs edges de type {} comme paramètre FORM |
schema | string | oui | Edge schema |
graph | string | non | Le nom du graphset (valeur par défaut : le graphset désigné lors du démarrage du service API) |
sync | bool | non | Si retourner le statut de la requête (valeur par défaut : false). Une valeur 'true' induira un temps d'attente de batch (-d , --duration ) lorsque le volume de données est inférieur à la taille de batch (-b , --batch ), ce qui affectera la performance d'insertion |
- Exemple de requête
{
"edges": [{"year":"1998", "_from":"USER001", "_to":"USER002"}],
"schema": "default",
"graph": "test_text",
"sync": true
}
- Réponse de succès
{
"Msg": "Insert Edges Success: [{\"_from\":\"USER001\",\"_to\":\"USER002\",\"year\":\"1998\"}]"
}
Mettre à jour des Nodes
Mettre à jour des nodes basés sur _id
ou _uuid
.
- URL de la requête
.../update/nodes
- Paramètre de la requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
nodes | [{},{},...] (JSON), map (FORM) | oui | Propriétés de Node, doivent inclure _id ou _uuid , si les deux sont inclus alors ignorer _uuid ; dans des outils tels que Postman, définir plusieurs nodes de type {} comme paramètre FORM |
graph | string | non | Le nom du graphset (valeur par défaut : le graphset désigné lors du démarrage du service API) |
- Exemple de requête
{
"nodes": [{"age":"35", "_id":"USER001"}, {"name":"John", "_id": "USER002"}],
"graph": "test_text"
}
- Réponse de succès
{
"Msg": "Update nodes on test_text",
"SuccessCount": 2
}
Mettre à jour des Edges
Mettre à jour des edges basés sur _from
&_to
ou _uuid
.
- URL de la requête
.../update/edges
- Paramètre de la requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
edges | [{},{},...] (JSON), map (FORM) | oui | Propriétés d'Edge, doivent inclure _from &_to ou _uuid , si les deux sont inclus alors ignorer _uuid ; dans des outils tels que Postman, définir plusieurs edges de type {} comme paramètre FORM |
graph | string | non | Le nom du graphset (valeur par défaut : le graphset désigné lors du démarrage du service API) |
- Exemple de requête
{
"edges": [{"_uuid":"1","_from_uuid":"2", "age":"55"}],
"graph": "test_text"
}
- Réponse de succès
{
"Msg": "Update edges on test_text",
"SuccessCount": 1
}