Ressource (sdata)
(→Opération sur une ressource) |
(→Opération sur une ressource (POST /uri/method)) |
||
| Ligne 380 : | Ligne 380 : | ||
</pre> | </pre> | ||
| − | ==Opération sur une ressource (POST | + | ==Opération sur une ressource (POST)== |
| + | |||
Les opérations des ressources correspondent aux méthodes publiques de cette ressource. | Les opérations des ressources correspondent aux méthodes publiques de cette ressource. | ||
Version du 23 décembre 2020 à 16:29
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 (POST)
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 |
Requête Batch (POST $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 (GET $schema)
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"
}
| Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |