Advanced Data Navigation

SlashDB allows for even more control in viewing databases using additional query string parameters.

sort

This feature enables sorting list of records.

Usage:

?sort=[column_name]
?sort=-[column_name]
?sort=[column_name_A],[column_name_B]

Value type: string

Default: depends on database collation

Applicable to: list of resources, list of arrays, vectors.

Examples:

/Customer?sort=Country - sort Customers by Country ascending

/Customer?sort=-Country - sort Customers by Country descending (minus before column name)

/Customer?sort=-Country,LastName - sort Customers by Country descending and LastName ascending

You may define by which columns and direction (ascending or descending) you want the data to be sorted.


distinct

This feature removes duplicate entries in tables, arrays and vectors.

Usage:

?distinct

Value type: (no value)

Default: (not used)

Applicable to: list of arrays, vectors

Examples:

/Customer/Country.html?distinct - show only unique countries


limit and offset

Query string parameters limit and offset allow to define number of returned and skipped records. This feature allows to implement a pagination mechanism.

Usage:

?limit=[number_of_rows_to_acquire]
?offset=[number_of_rows_to_skip]
?limit=[number_of_rows_to_acquire]&offset=[number_of_rows_to_skip]

Value type: integer

Default: no limit and no offset

Applicable to: list of resources, list of arrays, vectors

Examples:

/Invoice.html?limit=10 - show only first 10 Invoices

/Invoice.html?offset=2 - skip first 2 Invoices and show all the rest

/Invoice.html?limit=10&offset=2 - show 10 Invoices but skip first 2


stream

This feature comes handy when requesting large amounts of data.
When query string parameter stream is set True, SlashDB utilizes streaming data transfer mechanism of HTTP (Chunked Transfer Encoding). This allows to reduce amount of memory used while creating output and TTFB.
Header Transfer-Encoding: chunked is added to the response.
At this point streaming is supported only for "flat" (no depth or depth=0).
Also HTML format (GUI) does not support streaming.

Usage:

?stream=[true_or_false]

Value type: boolean (True or False)

Default: False

Applicable to: list of resources, list of arrays, vectors, single resource, single array, scalar

Examples:

/InvoiceLine.json?stream=True - stream all InvoiceLines (list of approx. 2240 objects)


depth

This feature is useful if you want to acquire objects together with all related data in single request. The value number indicates how many subsequent relations must be included (nested) in result.

Use with caution as high depth may return large amount of data or even all data in your database, resulting in slow response and possible timeouts.

Usage:

?depth=[depth_level]

Value type: integer

Default: 0 (a flat structure that contains object attributes)

Applicable to: list of resources, single resource

Examples:

/Customer/CustomerId/18.json - show only Customer object details (default depth)

/Customer/CustomerId/18.json?depth=1 - show Customer object with her Invoices and Employees


transpose

This feature converts tabular resources from column oriented to row oriented.

Data in form of list of resources or list of arrays may be transposed in a way that columns become rows and rows become columns. That feature is useful when client application requires series of data. The feature is controlled with presence of query string ?transpose and by assigning true or false value.

Regular (not transposed) output

[
    {
        "InvoiceDate": "2009-01-01T00:00:00",
        "BillingCountry": "Germany",
        "Total": 1.98
    },
    {
        "InvoiceDate": "2009-01-02T00:00:00",
        "BillingCountry": "Norway",
        "Total": 3.96
    },
    {
        "InvoiceDate": "2009-01-03T00:00:00",
        "BillingCountry": "Belgium",
        "Total": 5.94
    }
]

Transposed

{
    "InvoiceDate": [
        "2009-01-01T00:00:00",
        "2009-01-02T00:00:00",
        "2009-01-03T00:00:00"
    ],
    "BillingCountry": [
        "Germany",
        "Norway",
        "Belgium"
    ],
    "Total": [
        1.98,
        3.96,
        5.94      
    ]
}

Usage:

?transpose
?transpose=true
?transpose=false

Value type: boolean (True or False) or no value

Default: False

Applicable to: CSV, JSON formats. List of resources or arrays.

Examples:

/Employee.json - not transposed resource list
/Employee.json?transpose=false - not transposed resource list
/Employee.json?transpose - transposed resource list
/Employee.json?transpose=true - transposed resource list


wantarray

This feature makes output always as a list.

SlashDB is a Resource Oriented Architecture. When making request to a canonical URL (contains only filtering on Primary Keys, which explicitly identifies a single resource) SlashDB does not pack returned object into form of a list. With query string wantarray=True you may force to put that object into a list anyway.

In case of canonical URLs, if the resource has not been found, we would get an 404, but in wantarray mode, we'll get an empty array [].

Usage:

?wantarray=[true_or_false]

Value type: boolean (True or False)

Default: False

Applicable to: single resource, single array, scalar

Examples:

/Customer/CustomerId/18.json - canocial URL, output not wrapped in a list

/Customer/CustomerId/18.json?wantarray=True - canocial URL, output wrapped in a list

/Customer/CustomerId/18/Country/USA.json - although URL contains filtering on Primary Key it's not canonical because it contains other filter (Country = USA)

/Customer/CustomerId/18/Country.json?wantarray=True - wantarray applied on a scalar

/Customer/CustomerId/18/Country,City.json?wantarray=True - wantarray applied on an array


wildcard

The query string parameter wildcard allows to change default wildcard character.

By default, SlashDB allows filtering by substring using * (asterisk) character e.g. /Customer/LastName/S* - customers with last name starting with letter "S".

In case you want to filter literally by asterisk character you must tell SlashDB to use different character for wildcard e.g. wildcard=$ or a sequence of characters e.g. wildcard=$$.

Characters that have special meaning in URL e.g. /, ?, #, &, +, ;, % shouldn't be used in wildcard.

Usage:

?wildcard=[string_representing_wildcard]

Value type: string

Default: * (asterisk character)

Applicable to: list of resources, list of arrays, vectors

Examples:

/Customer/Company/* Inc. - find all Customers whose company ends with "Inc."

/Customer/Company/$ Inc.?wildcard=$ - find all Customers whose company ends with "Inc." using different wildcard


separator

Allows to change default character , (comma) which is used when filtering for multiple values. Useful when one of the values contains a comma.

Usage:

?separator=[string_representing_separator]

Value type: string

Default: , (comma character)

Applicable to: list of resources, list of arrays, vectors

Examples:

/Invoice/InvoiceId/1,2,3 - get invoices 1, 2 and 3.

/Invoice/InvoiceId/1$2$3?separator=$ - same as above but using $ as a separator of values

/Invoice/BillingAddress/11, Place Bellecour.html?separator=$ - show Invoices that have BillingAddress "11, Place Bellecour" (contains a comma).


url string substitution

This feature allows to represent string using another string.

There are rare situations when value in filtering is part of URL syntax. For example "/" character normally would be interpreted as a path separator and couldn't be correctly used for filter value.

By default SlashDB will interpret "__" (double underscore character) as "/" (slash character).

Usage:

?[placeholder]=[meaning_of_the_placeholder]

Value type: string

Default: __=/ (double underscore character is interpreted as forward slash)

Applicable to: list of resources, list of arrays, vector, single resource, single array, scalar

Examples:

/Chinook/Artist/Name/AC__DC - double underscore is treated as forward slash
/Chinook/Artist/Name/AC_DC?_=/ - single underscore is treated as forward slash


JSON

href for json

This feature allows to control presence of URL references in the output. Query string href overrides INI settings json_sdb.href.

Usage:
URL

?href=[true_or_false]

INI settings

json_sdb.href = [true_or_false]

Value type: boolean (True or False)

Default: True

Applicable to: list of resources, list of arrays, vectors, single resource, single array, scalar

Examples:
/Chinook/Artist/ArtistId/1.json?href=false - URL references don't appear in output.

{
"ArtistId": 1,
"Name": "AC/DC"
}

/Chinook/Artist/ArtistId/1.json?href=true - URL references appear in output.

{
"Album": {
"__href": "/db/Chinook/Artist/ArtistId/1/Album.json"
},
"ArtistId": 1,
"Name": "AC/DC",
"__href": "/db/Chinook/Artist/ArtistId/1.json"
}

XML

nil visible for xml

This feature allows to force showing empty line for NULL values. Forcing empty tags might be useful when combining data with other requests to keep data in order. By default empty values are not shown to reduce document length.

Usage:

?nil_visible=[True_or_False]

Value type: boolean (True or False)

Default: False

Applicable to: list of resources, list of arrays, vector, single resource, single array, scalar

Examples:

/Customer/CustomerId,Company.xml - not showing empty tags by default

/Customer/CustomerId,Company.xml?nil_visible=False - not showing empty tags

/Customer/CustomerId,Company.xml?nil_visible=True - showing tags with no value


href for xml

This feature allows to control presence of URL references in the output. Query string href overrides INI settings xml_sdb.href.

Usage:
URL

?href=[true_or_false]

INI settings

xml_sdb.href = [true_or_false]

Value type: boolean (True or False)

Default: True

Applicable to: list of resources, list of arrays, vectors, single resource, single array, scalar

Examples:
/Chinook/Artist/ArtistId/1.xml?href=false - URL references don't appear in output.

<?xml version="1.0" encoding="utf-8"?>
<SlashDB xmlns="http://www.vtenterprise.com/slashdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.vtenterprise.com/slashdb https://demo.slashdb.com/db/Chinook/Artist.xsd?cardinality=1">
    <Artist>
        <ArtistId>1</ArtistId>
        <Name>AC/DC</Name>
    </Artist>
</SlashDB>

/Chinook/Artist/ArtistId/1.xml?href=true - URL references appear in output.

<?xml version="1.0" encoding="utf-8"?>
<SlashDB xmlns="http://www.vtenterprise.com/slashdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.vtenterprise.com/slashdb https://demo.slashdb.com/db/Chinook/Artist.xsd?cardinality=1">
    <Artist href="/db/Chinook/Artist/ArtistId/1.xml">
        <ArtistId>1</ArtistId>
        <Album href="/db/Chinook/Artist/ArtistId/1/Album.xml" />
        <Name>AC/DC</Name>
    </Artist>
</SlashDB>

XSD

cardinality

For XML schema (XSD) only, there is a special cardinality query parameter which sets the xsd:element maxOccurs attribute. By default it is set to cardinality=n.

Cardinality=1 is useful when we require a schema for individual resources, such as for canonical URLs with a primary key column only.

Usage:

?cardinality=[xsd_maxOccurs_value]

Value type:

  • integer greater than 0
  • string "n"
  • string "unbounded"

Default: unbounded

Applicable to: list of resources, list of arrays, vectors

Examples:

/Invoice.xsd?cardinality=5 - XSD contains maxOccurs="5" and when validation will check how many times Invoice tag appears in XML file.


CSV

headers

Determines if a CSV output (or input) should contain a with column names.

Usage:

?headers=[True_or_false]

Value type: boolean (True or False)

Default: True

Applicable to:

  • PUT of csv document on list of resources, list of arrays, vectors
  • POST of csv document on resource table endpoints

Examples:
/Chinook/Customer.csv - default (with headers)
/Chinook/Customer.csv?headers=True - with headers
/Chinook/Customer.csv?headers=False - without headers


csvNullStr

Allows to set NULL value in database when uploading CSV document (only POST or PUT).

The csv documents do not have specific character that would explicitly mean "no value". SlashDB provides a csvNullStr query parameter which defines the representation for a NULL value in parsed csv document.

This flag is useful only for nullable columns and does not affect the way the database driver handles NULL values.

Value type: string

Default: (empty string)

Applicable to:

  • PUT of csv document on list of resources, list of arrays, vectors
  • POST of csv document on resource table endpoints

Usage:

?csvNullStr=[string_representing_null_in_csv]

Examples:

Making a POST request to https://demo.slashdb.com/db/Chinook/Invoice.csv?csvNullStr=myNull with data:

InvoiceId,CustomerId,InvoiceDate,BillingAddress,BillingCity,BillingState,BillingCountry,BillingPostalCode,Total
1000,2,2666-01-01 00:00:00,myNull,Test City,Test State,Test Country,00 000,6.66

will result in passing to database NULL for BillingAddress.


TXT

nil visible for txt

This feature allows to force showing empty line for NULL values. Forcing empty lines might be useful when combining data with other requests to keep data in order. By default empty values are not shown to reduce document length.

Usage:

?nil_visible=[True_or_False]

Value type: boolean (True or False)

Default: False

Applicable to: vector

Examples:

/Customer/Company.txt - not showing empty values by default

/Customer/Company.txt?nil_visible=False - not showing empty values

/Customer/Company.txt?nil_visible=True - showing empty values as empty lines

results matching ""

    No results matching ""