Under the Hood¶
The REST model¶
Check out the wikipedia page if you are not familiar with REST.
[1] | http://en.wikipedia.org/wiki/REST |
The REST model in XNAT¶
Basically the resources are accessible pairing a level and its ID in a sequence representing a URI starting by /REST.
- Uniquely identifiable resources:
- /REST/projects/{ID}
- /REST/projects/{ID}/subjects/{ID}
- Listing the resources is done by not giving an ID at the end of a URI:
- /REST/projects
- /REST/projects/{ID}/subjects
- Requesting specific data in specific format is done with a query string:
- /REST/projects?format=csv
- /REST/projects/{ID}?format=xml
[2] | http://www.xnat.org/Web+Services |
REST in Python¶
The REST resource levels supported by this Python library are the following:
- projects
- subjects
- experiments
- scans
- reconstructions
- assessors
Attached to each resource level are:
- resources
- files
Every level corresponds to a Python class sharing common methods from ResourceObject and adding methods relevant to the specific resource.
REST resource Python Class REST Interface projects Project subjects Subject experiments Experiment scans Scan reconstructions Reconstruction assessors Assessor resources Resource files File
This classes may but should not be instantiated manually.
The HTTP requests are handled by a slightly modified version of httplib2, which is shipped the package. The main fix was made to enable back the built-in HTTP cache to avoid downloading again files that are already in the cache. This changes nothing for other resources that don’t have to necessary HTTP headers to enable a cache service.