Ressource (sdata)
Sommaire |
Dans l'interface SData les ressources sont les objets de l'application.
Requête sur les ressources (GET)
GET http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE') Response: 200 OK { "$baseUrl":"http://localhost:8080/sdata/l1000/gentiers/-/", "$title":"TTiers - -", "$updated":"2020-12-22T08:10:09.740Z", "$resources":[ { "$url":"TTiers('9D33A23CFA6A005500F6000000285DAE')", "$title":"ABI Jardin", "$updated":"2010-03-23T15:37:46.000Z", "$etag":"9D33A23CFA6A005500F6000000285DAE-000002C60000421C", "$key":"9D33A23CFA6A005500F6000000285DAE", "$baseUrl":"http://localhost:8080/sdata/l1000/GenTiers/-/", "stamp":"000002C60000421C", .... Attribute list ... } ] }
Paramètres de la requête
Paramètre | valeur | Usage |
---|---|---|
select | liste d'attributs séparés par des virgules | Liste des attributs à retourner |
where | Expression objet | Filtre de la requête |
orderBy | Attribut de tri | Ordre de tri de la requête |
count | Taille de page | Pagination : Taille de page |
startIndex | Index de page | Pagination par page : Numéro de page (0 première) |
startKey | Valeur de clé ou de tri | Pagination par clé : Clé de position |
keyDirection | lt,le,gt,ge | Pagination par clé : direction par rapport à startKey |
Les valeurs passées en paramètre doivent être encodées en HTML
Exemple :
where=code eq 'ABI 007'
doit être encodée en :
where=code%20eq%20%27ABI%20007%27
Select
GET http://localhost:8080/sdata/gentiers/ttiers?select=code,caption
Filtre
Opérateurs:
opérateur | équivalence | exemple | encoded |
---|---|---|---|
eq | = | where=code eq 'ABI 007' | where=code%20eq%20%27ABI%20007%27 |
neq | <> | ||
lt | < | ||
le | <= | ||
gt | > | ||
ge | >= | ||
like | like | where=code like 'ABI %' | where=code%20like%20%27ABI %25%27 |
in | in |
Valeurs des paramètres:
Les valeurs des paramètres sont passées en littérale
Type de donnée | exemple |
---|---|
Chaîne | code eq 'xxx' |
boolean | flag eq true |
numérique | value eq 1 |
flottant | value eq 1.0 |
date | $updated > '2020-12-21T00:00:00' |
enum | ? |
Ordre de tri
Tri ascendant :
orderby=code
Tri descendant :
orderby=code%20desc
GET http://localhost:8080/sdata/gentiers/ttiers?orderBy=code%20desc
Pagination par page
Utiliser orderBy, count et startIndex
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&orderby=code&count=10&startIndex=0 GET http://localhost:8080/sdata/gentiers/ttiers?select=code&orderby=code&count=10&startIndex=1 GET http://localhost:8080/sdata/gentiers/ttiers?select=code&orderby=code&count=10&startIndex=2 ...
Pagination par clé
Utiliser orderBy, startKey et keyDirection
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&orderby=code&count=10&startKey=1B28EFFFF1C3000200F6000000230893&keyDirection=lt
Création de ressource (POST)
POST http://localhost:8080/sdata/gentiers/ttiers Request: { "code":"SYFRE1", "caption":"syfre 1", "sitesList":[ { "code":"SITE1", "caption":"site1 de syfre1", "adresse":{ "nomRueVoie":"rue de la pompe", "ville":"Clichy", "codePostal":"92100", "pays":{ "$key":"9D33A23CFA6A005500150000001700FD" } } } ] } Response: 200 OK { "$resources": [ { "$key": "9D33A23CFA6A005500F6000001E20022", "$url": "http://localhost:8080/sdata/l1000/gentiers/-/TTiers('9D33A23CFA6A005500F6000001E20022')", ... attribute list ... } ] }
La création de ressource dans les rôles dépend de la nature du rôle.
- Pour les rôles de type composition les ressources liées sont créés simultanément.
- Pour les rôles qui ne sont pas des compositions les ressources liées sont rattachés.
Identification des références
Par clé:
{ "pays":{ "$key":"9D33A23CFA6A005500150000001700FD" } }
Par uri:
{ "pays":{ "$url":TPays("9D33A23CFA6A005500150000001700FD") } }
Par expression:
{ "pays":{ "$where":"codeISO = 'FRA'", "$orderby":"codeISO" } }
Lorsqu'une expression est utilisée la première ressource retournée par l'expression est utilisée.
Modification de ressource (PUT)
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018') Request: { "codeSIRET":"12345678" } Response: 200 OK [ { .... resource modified ... } ]
Modification de rôle liste composition :
Par défaut les rôles composition sont gérés en remplacement, pour contrôler le mode de gestion des rôles utilisez un élément de contrôle "$" pour le rôle :
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018') Request : { "sitesList":[ { "code":"SITE3", "caption":"site3 de syfre1", "adresse":{ "nomRueVoie":"rue Mogador", "ville":"Paris", "codePostal":"75008", "pays":{ "$where":"codeISO = 'FRA'", "$orderby":"codeISO" } } } ] } Response: 200 OK { "$resources": [ { "$key": "9D33A23CFA6A005500F6000001E30019", "$url": "/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')", "stamp": "000001710000002A", .... "sitesList": [ ... Site3 has been added, other sites has been removed. ... There is one site left in the list ] ] }
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018') Request : { "$":{ "sitesList:["create"] }, "sitesList":[ { "code":"SITE3", "caption":"site3 de syfre1", "adresse":{ "nomRueVoie":"rue Mogador", "ville":"Paris", "codePostal":"75008", "pays":{ "$where":"codeISO = 'FRA'", "$orderby":"codeISO" } } } ] } Response: 200 OK { "$resources": [ { "$key": "9D33A23CFA6A005500F6000001E30019", "$url": "/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')", "stamp": "000001710000002A", .... "sitesList": [ ... Site3 has been added, other sites are not affected ... There is one site more in the list } ] ] }
contrôle | action |
---|---|
create | Les nouvelles ressources sont ajoutées au rôle |
update | Les ressources existantes dans le rôle sont mise à jour |
delete | Les ressources existantes et non présentes dans la requête sont supprimées |
La valeur par défaut est "create","update","delete"
Suppression de ressource (DELETE)
DELETE http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018') Response: 200 OK
Opération sur une ressource
Les opérations des ressources correspondent aux méthodes publiques de cette ressource.
Méthode d'instance de ressource:
POST http://localhost:8080/sdata/testsyfrewf/wfclassea('B5A28A92EB0C00020010000000DB0006')/testmethode Request: { "pString":"value1", "pInteger":1, "pFloat":1.2, "pEnum":1, "pBoolean":false } Response: 200 OK { "result": "pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1" }
Méthode de classe de ressource, ou méthode de classe non persistante :
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/testmethode Request: { "pString":"value1", "pInteger":1, "pFloat":1.2, "pEnum":1, "pBoolean":false } Response: 200 OK { "result": "pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1" }
Les paramètres sont passés par nom et valeur.
Les types de paramètres et de retour supportés sont :
Type | Exemple |
---|---|
Chaîne | "p":"xxx" |
Entier | "p":1 |
Boolean | "p":true |
Flottant | "p":1.1 |
Datetime | "p":"2020-12-25T01:01:01" |
Enuméré (par valeur) | "p":1 |
Batch
Une requête Batch permet de réaliser plusieurs opérations de type POST/PUT/DELETE en une seule fois.
Une requête Batch contient un tableau de ressources, pour chaque ressource l'action et l'uri doivent être précisées :
POST http://.../sdata/$batch { "$resources":[ { "$httpMethod":"POST", "$url":"gentiers/ttiers", "code":"SYFRE2", "caption":"syfre 2", "sitesList":[ { "code":"SITE1", "caption":"site2 de syfre2", "adresse":{ "nomRueVoie":"rue de la pompe", "ville":"Clichy", "codePostal":"92100", "pays":{ "$where":"codeISO = 'FRA'", "$orderby":"codeISO" } } } ] } ] }
Par défaut les opérations réalisées sont unitaires (une transaction par ressource).
Schéma d'une ressource
Le schéma d'une ressource retourne la structure de la classe.
GET http://localhost:8080/sdata/testsyfrewf/wfclassea/$schema Response : 200 OK { "title": "Libellé de la Classe A", "properties": { "unBool": { "type": "boolean", "title": "Un Bool" }, "unCode": { "type": "string", "title": "Un code" }, "unCompteur": { "type": "string" }, "unDerive": { "type": "string", "title": "Un dérivé" }, "unDouble": { "type": "double", "title": "Un double" }, "uneChaine": { "type": "string", "title": "une chaine" }, "unEmail": { "type": "string", "title": "Un email" }, "unEntier": { "type": "int", "title": "Un Entier" }, "unEtat": { "type": "integer", "title": "Un Etat" }, "unStatus": { "type": "int", "title": "Statut de l'objet (Panel)" }, "WFClasseBRef": { "type": { "$ref": "http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseB/$schema", "$relationship": "reference" }, "title": "Référence B" }, "WFClasseCList": { "type": "array", "item": { "title": "Classe C", "properties": { "uneChaine": { "type": "string", "title": "une chaine" }, "unEntier": { "type": "int", "title": "un entier" } } } } }, "$url": "http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseA/$schema" }