Ressource (sdata)

De Wiki1000

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.

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"
}

Les paramètres sont passés par nom et valeur.


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).

Outils personnels