Introduzione
Le Web API create da Instant Developer Cloud sono di tipo REST ed in standard oData (www.odata.org) e quindi è possibile fare riferimento alla documentazione relativa.
Una prima infarinatura delle chiamate la potete trovare nella guida ufficiale di oData:
Nota bene:
Per testare i link di queste Web API occorre una autenticazione Basic con user: alladin e password: opensesame.
Differenze con oData
Rispetto alle possibili opzioni dei comandi oData ci sono alcune differenze dovute alle caratteristiche dei documenti di Instant Developer, per fare un esempio se volessi utilizzare il parametro $expand per indicare alla web api di restituire una determinata collection otterrò un messaggio di errore che mi avverte che questa funzionalità non è stata implementata.
Quindi se eseguo la chiamata:
Ottengo come risposta:
{
"error": {
"code": -3,
"message": "Request type not implemented: '$expand=OrderDetails'"
}
}
Su Instant Developer Cloud posso richiedere il caricamento delle collection di primo livello del documento mediante l’opzione childLevel=1, quindi la nostra richiesta diventa;
https://prod3-pro-gamma.instantdevelopercloud.com/datamapdesignpatterns/Order(10540)?childLevel=1
Esempi di chiamata
Per facilitare chi ha poca dimestichezza con le chiamate Web API con oData riportiamo alcuni esempi significativi.
Chiamata con ordinamento record
Posso eseguire l’ordinamento dei record risultanti mediante il parametro $orderby.
Chiamata con limite sul numero record
Se vogliamo avere la lista degli ultimi 10 ordini si utilizza il parametro $top combinato ad $orderby.
Chiamata per chiave primaria con più campi
In caso la chiave primaria sia composta da più di un campo è possibile indicarli separati da virgola.
Chiamata con filtro e conteggio dei record
Vediamo come recuperare una lista di OrderDetail filtrati per OrderID = 10540 ed ottenere anche il numero di record trovati.
Nella risposta sarà presente anche questo valore:
"@odata.count": 4
Chiamata con paginazione
Se vogliamo ottenere un set di risultati da paginare per la nostra chiamata occorre che nell’header della stessa si imposti il valore:
Prefer: odata.maxpagesize=100
Questo fissa la paginazione a 100 record per volta.
In questo modo nella risposta alla fine dei dati avremo il link per la chiamata ai successivi 100 record.
Qui sotto un esempio di risposta.
{
"@odata.context": "https://prod3-pro-gamma.instantdevelopercloud.com/datamapdesignpatterns/$metadata#Order",
"value": [
{
"OrderID": 11074,
"CustomerID": "SIMOB",
"EmployeeID": 7,
"OrderDate": "1998-05-06",
"RequiredDate": "1998-06-03",
"ShippedDate": null,
"ShipVia": 2,
"Freight": 18,
"ShipName": "Simons bistro",
"ShipAddress": "Vinbæltet 34",
"ShipCity": "Kobenhavn",
"ShipRegion": null,
"ShipPostalCode": "1734",
"ShipCountry": "Denmark",
"ItemCount": 1
}
],
"@odata.nextLink": "https://prod3-pro-gamma.instantdevelopercloud.com/datamapdesignpatterns/Order?$orderby=OrderDate desc&$skiptoken=eyJwYWdlIjoxLCJwYWdlU2l6ZSI6MSwicGFnaW5nTW9kZSI6MiwibGFzdFJvdyI6eyJPcmRlckRhdGUiOiIxOTk4LTA1LTA2VDAwOjAwOjAwLjAwMFoiLCJPcmRlcklEIjoxMTA3NH19"
}