Documentatie

Für den Webservice wird eine spezielle Technik verwendet, um so effizient wie möglich mit den Daten umzugehen. Die Technik wird Expansion genannt.

Beim Abrufen der Daten werden manchmal Teilmengen übergeben. Da diese Teilmengen nicht in allen Fällen erforderlich sind, geht der Webservice standardmäßig davon aus, dass diese Teilmengen nicht übergeben werden müssen. Nur wenn ausdrücklich danach gefragt wird. Dies geschieht über den Expansions-Parameter.

Fehlerbehandlung

Wenn eine Expansion angegeben wird, die bei einer Entität nicht vorkommen darf, wird ein Precondition-Fehler generiert.

 {
   "error":{
      "code":412,
      "message":"Precondition Failed: extra contains an invalid expansion for entity object"
   }
}

Beispiel

Um zu zeigen, was die Expansion bewirkt, ist die Suche ein gutes Beispiel.
Um in Gruppen zu suchen, wird die folgende Anfrage verwendet:

 GET api/rest/group/search/?expand=objects&page=1&per_page=5

liefert dies (teilweise dargestellt):

 {
   "page":1,
   "pages":1,
   "per_page":5,
   "total":2,
   "groups":[
      {
         "id":"1",
         "type":"group",
         "desc":"Bungalow",
         "long_desc":"Bungalow",
         "long_memo":"",
         "total_weight":0,
         "total_objects":2,
         "weight":1,
         "objects":[
            {
               "id":17,
               "desc":"Bungalow standaard",
               "long_desc":"Bungalow standaard"
            },
            {
               "id":18,
               "desc":"Bungalow comfort",
               "long_desc":"Bungalow comfort"
            }

Wenn die Expansion um slots erweitert wird:

 GET api/rest/group/search/?expand=objects,slots&page=1&per_page=5

liefert dies (teilweise dargestellt):

 {
   "page":1,
   "pages":1,
   "per_page":5,
   "total":2,
   "groups":[
      {
         "id":"1",
         "type":"group",
         "desc":"Bungalow",
         "long_desc":"Bungalow",
         "long_memo":"",
         "total_weight":0,
         "total_objects":2,
         "weight":1,
         "objects":[
            {
               "id":17,
               "desc":"Bungalow standaard",
               "long_desc":"Bungalow standaard",
               "slots":{
                  "2012-04-16 00:00:00":{
                     "DateFrom":"2012-04-16 00:00:00",
                     "Request":false,
                     "DateTill":"2012-04-20 00:00:00",
                     "Nights":4,
                     "Days":5,
                     "Free":4,
                     "Booked":1
                  },
                  "2012-04-20 00:00:00":{
                     "DateFrom":"2012-04-20 00:00:00",
                     "Request":false,
                     "DateTill":"2012-04-23 00:00:00",
                     "Nights":3,
                     "Days":4,
                     "Free":5,
                     "Booked":0
                  },

Wie gezeigt wird, erscheinen in der zweiten Response die slots mit Details.

Functional information: