OData URIs
Under Construction
Contents
See Also
OData Operators, ODATA_CREATE(), ODATA_DELETE(), ODATA_READ(), ODATA_UPDATE(), Working with JSON and JQL,Working with OData in Lianja Cloud Server
OData URIs
Lianja Cloud Server
When used with the Lianja Cloud Server, the URI is formed as follows:
<server>/odata/<database>/<table>?<arg1>&<arg2>&<arg3>...
e.g.
http://localhost:8001/odata/southwind/customers?$skip=10&$top=5
Or, if the Lianja Server is listening on port 80 or the ISAPI Extension for IIS is installed:
http://localhost/odata/southwind/customers?$skip=10&$top=5
When using the $sql argument, the URI does not include a table reference:
<server>/odata/<database>?$sql=<sql statement>
e.g.
http://localhost:8001/odata/southwind?$sql=select * from shippers
Note: the OData Read and Update services can be enabled/disabled in the Lianja Server Manager Security Settings.
OData Functions
When using the OData Functions from the Lianja App Builder Console or from a Lianja/VFP program (.prg), Lianja/VFP Server Page (.rsp) or JavaScript Server Page (.jssp), the URI is formed as follows:
/<database>/<table>?<arg1>&<arg2>&<arg3>...
e.g.
odata_read("/southwind/customers?$skip=10&$top=5")
When using the $sql argument, the URI does not include a table reference:
/<database>?$sql=<sql statement>
e.g.
odata_read("/southwind?$sql=select * from shippers order by companyname")
Value Selector
URIs can include a 'value selector' on the table.
e.g.
http://localhost/odata/southwind/customers('A*')
odata_read("/southwind/customers('A*')
The OData server will use heuristics to determine the column that 'A*' is referring to in the 'customers' table. If the column customersid exists it will be used, if that does not exist and the table is a 'collection' i.e. ends with an 's', the 's' will be removed and the column customerid will be looked up.
The column can also be specified, for example to select all customers where the 'contactname' starts with 'A':
http://localhost/odata/southwind/customers('A*', contactname)
odata_read("/southwind/customers('A*', contactname)")
The $nostrcompare argument can also be used to disable exact matching:
http://localhost/odata/southwind/customers('A', contactname)?$nostrcompare
odata_read("/southwind/customers('A', contactname)?$nostrcompare")
Arguments
The following URI arguments are available:
Argument | Description | Example |
---|---|---|
$callback | Specify a callback function that will wrap the data returned. This is used with JSONP calls to bypass SOP issues in the browser |
$callback=your_javascript_function |
$count | Don't return any data just tell me how many records would have been selected | $count |
$filter | Selects only those records that match the specified filter | $filter=contactname eq 'A' and amount gt 0 |
$format | The output format | $format=ado $format=attachment $format=csv $format=excel $format=html $format=img $format=json $format=jsonarray $format=jsongrid |
$metadata | Returns metadata describing the columns in the table; name, type, width and decimals. | $metadata |
$nocount | Don't return the __count member which details the total number of rows that match the query. This improves performance on Virtual Tables |
$nocount |
$nostrcompare | Disable exact matching. Comparisons are carried out up to the length of the left-hand expression, e.g. 'A' = 'ALFKI'. | $nostrcompare |
$orderby | Specify a column or expression that the data should be ordered by | $orderby=contactname |
$rowid | Add the unique rowid into the output ( __rowid ) which can be used to update data later | $rowid |
$select | Selects only the specified columns (or expressions) | $select=customerid,contactname |
$skip | Skips a number of selected records | $skip=50 |
$sql | Evaluate a SQL SELECT statement directly and return the results. | $sql=select * from customers |
$top | Selects the specified number of records | $top=10 |